<?
/*****************************************************************
* *
* This is NOT the LATEST version of Big Sam. *
* Please got to http://bigsam.gezzed.net to get a newer one. *
* *
* The Big Sam Team, bigsam@gezzed.net *
* *
*****************************************************************/
// *************************************************************** //
// * * //
// * BIG SAM : Built-In Guestbook / Stand-Alone Module * //
// * Version 1.1.11 April, 16th 2002 * //
// * * //
// * Copyleft 2000 Georges Zadrozynski & Rémi Lecoupé-Grainville * //
// * gezzed@gezzed.net & remilg@free.fr * //
// * * //
// * Homepage : http://bigsam.gezzed.net/ * //
// * Mail : bigsam@gezzed.net * //
// * * //
// * This source is under GNU/GPL General Public License * //
// * * //
// *************************************************************** //
/*
BIG SAM - Built-In Guestbook / Stand-Alone Module - PHP Guestbook
Copyright (C) Georges Zadrozynski & Rémi Lecoupé-Grainville
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
$version = "1.1.11";
/**********************************
* Configuration Step 1 : Language *
**********************************/
// Please remove all the unwanted language blocks
//ENGLISH
$langAdminError = "Administrator Error";
$langBsGuestbook = "BIG SAM Guestbook";
$langChPassword = "Change Password";
$langEmail = "E-mail :";
$langEntry = "Entry";
$langGbAdmin = "Guestbook Administration";
$langMessage = "Message :";
$langName = "Name :";
$langnewPassword = "New Password :";
$langOpenError = "Error opening file !<br>Be sure writing is allowed in this directory.";
$langPassChanged = "The password has been changed.";
$langPassError = "The new passwords don't match !";
$langPassword = "Change <i>Big Sam</i> Password";
$langRetype = "Retype new Password :";
$langSubmit = "Send the message";
$langSubmitModif = "Submit Modifications";
$langSystemError = "System Error";
$langSystemMessage = "System Message";
$langWrongPassword = "Wrong Admin Password";
/*
// FRENCH
$langAdminError = "Erreur Administrateur";
$langBsGuestbook = "BIG SAM - Livre d'Or";
$langChPassword = "Changement de mot de passe";
$langEmail = "E-mail :";
$langEntry = "Message";
$langGbAdmin = "Administration";
$langMessage = "Message :";
$langName = "Nom :";
$langnewPassword = "Nouveau mot de passe :";
$langOpenError = "Erreur d'ouverture de fichier !<br>Assurez-vous d'avoir les droits d'écriture.";
$langPassChanged = "Le mot de passe a été changé.";
$langPassError = "Les mots de passe ne correspondent pas.";
$langPassword = "Changer le mot de passe de <i>Big Sam</i>";
$langRetype = "Confirmez le mot de passe :";
$langSubmit = "Envoyer le message";
$langSubmitModif = "Confirmer les modifications";
$langSystemError = "Erreur Système";
$langSystemMessage = "Message du Système";
$langWrongPassword = "Mauvais mot de passe";
// GERMAN
// By Klaus-Peter Walter & Götz Waschk (waschk@informatik.uni-rostock.de)
$langAdminError = "Administrator Fehler";
$langBsGuestbook = "BIG SAM Gästebuch";
$langChPassword = "Ändere Passwort";
$langEmail = "eMail :";
$langEntry = "Eintrag";
$langGbAdmin = "Gästebuch Administration";
$langMessage = "Ihre Nachricht :";
$langName = "Name :";
$langnewPassword = "Neues Passwort :";
$langOpenError = "Fehler beim öffnen der Datei !<br>Sind Sie sicher, dass Sie die richtigen Rechte für dieses Verzeichnis besitzen ?";
$langPassChanged = "Neues Passwort OK.";
$langPassError = "Das neue Password funktioniert nicht !";
$langPassword = "Ändere <i>Big Sam</i> Passwort";
$langRetype = "Wiederholen Sie das neue Passwort :";
$langSubmit = "Nachricht abschicken";
$langSubmitModif = "Änderungen abschicken";
$langSystemError = "System Fehler";
$langSystemMessage = "System Nachricht";
$langWrongPassword = "Falsches Administrator-Passwort";
// SPANISH
// By Valéry Frémaux (vf@eisti.fr)
$langAdminError = "Error Del Administrador";
$langBsGuestbook = "BIG SAM Guestbook ";
$langChPassword = "Cambio del pass";
$langEmail = "E-mail: ";
$langEntry = "Elemento: ";
$langGbAdmin = "Administración Del Guestbook";
$langMessage = "Mensaje: ";
$langName = "Nombre: ";
$langnewPassword = "Nuevo pass: ";
$langOpenError = "Error de escritura del fichero!<br>Verifica que es possible escribir en este directorio.";
$langPassChanged = "Se ha cambiado el pass.";
$langPassError = "Los pass no corresponden!";
$langPassword = "Cambie el pass de <i>Big Sam</i>";
$langRetype = "Confirma su nuevo pass: ";
$langSubmit = "Manda ";
$langSubmitModif = "Manda Las Modificaciones";
$langSystemError = "Error Sistema";
$langSystemMessage = "Mensaje del sistema";
$langWrongPassword = "Pass Incorrecto";
// DUTCH
// By Dimitri van Hees (p.vanhees@chello.nl)
$langAdminError = "Beheerfout";
$langBsGuestbook = "Gastenboek";
$langChPassword = "Verander wachtwoord";
$langEmail = "E-mail :";
$langEntry = "Entry";
$langGbAdmin = "Gastenboek beheer";
$langMessage = "Bericht :";
$langName = "Naam :";
$langNewPassword = "Nieuw wachtwoord :";
$langOpenError = "Fout bij openen bestand !<br>CHMOD moet 777 zijn in deze map.";
$langPassChanged = "Het wachtwoord is veranderd.";
$langPassError = "Het zijn verschillende wachtwoorden !";
$langPassword = "Verander <i>Big Sam</i> wachtwoord";
$langRetype = "Type het nieuwe wachtwoord nogmaals :";
$langSubmit = "Zet in gastenboek!";
$langSubmitModif = "Breng veranderingen aan";
$langSystemError = "Systeemfout";
$langSystemMessage = "Systeembericht";
$langWrongPassword = "Verkeerd wachtwoord!";
// ITALIAN
// By Piero Mannelli (webmaster@subnet.it)
$langAdminError = "Errore Amministratore";
$langBsGuestbook = "BIG SAM Guestbook";
$langChPassword = "Cambia Password";
$langEmail = "E-mail :";
$langEntry = "Messaggio";
$langGbAdmin = "Amministrazione Guestbook";
$langMessage = "Messaggio :";
$langName = "Nome :";
$langnewPassword = "Nuova password :";
$langOpenError = "Errore di apertura del file !<br>Assicurati che la directory abbia i permessi di scrittura.";
$langPassChanged = "La password è stata cambiata.";
$langPassError = "La nuova password non corrisponde !";
$langPassword = "Cambia la Password di <i>Big Sam</i>";
$langRetype = "Ripeti password :";
$langSubmit = "Invia il messaggio";
$langSubmitModif = "Invia modifiche";
$langSystemError = "Errore di sistema";
$langSystemMessage = "Messaggio di sistema";
$langWrongPassword = "Password Amministratore Errata";
// DANISH
// By Steven Rasmussen (sr@danmedia.dk) & Thomas H. Jørgensen (holmen@mail.nu )
$langAdminError = "Administrationsfejl";
$langBsGuestbook = "BIG SAM Gæstebog";
$langChPassword = "Skift kodeord";
$langEmail = "E-mail :";
$langEntry = "Indlæg";
$langGbAdmin = "Administration af gæstebogen";
$langMessage = "Meddelelse :";
$langName = "Navn :";
$langnewPassword = "Nyt kodeord :";
$langOpenError = "Fejl ved åbning af fil!<br> Kontrollér at du har skriveadgang til denne mappe.";
$langPassChanged = "Kodeordet er ændret.";
$langPassError = "De nye kodeord er ikke ens!";
$langPassword = "Skift <i>Big Sam</i> kodeord";
$langRetype = "Gentag nye kodeord:";
$langSubmit = "Send meddelelse";
$langSubmitModif = "Send ændringer";
$langSystemError = "Systemfejl";
$langSystemMessage = "Systembesked";
$langWrongPassword = "Forkert administratorkodeord";
// PORTUGUESE
// By Guilherme Halls (halls@email.com.br)
$langAdminError = "Erro do Administrador";
$langBsGuestbook = "BIG SAM Guestbook";
$langChPassword = "Alterar a senha";
$langEmail = "E-mail :";
$langEntry = "Entrada";
$langGbAdmin = "Administração do Guestbook";
$langMessage = "Mensagem :";
$langName = "Nome :";
$langnewPassword = "Nova Senha :";
$langOpenError = "Erro Abrindo o arquivo!<br>Certifique que o diretório está com permição para gravação.";
$langPassChanged = "A senha foi alterada.";
$langPassError = "As senhas são diferentes !";
$langPassword = "Mudar a senha do <i>Big Sam</i>";
$langRetype = "Confirme a nova senha :";
$langSubmit = "Postar a mensagem";
$langSubmitModif = "Aplicar Modificações";
$langSystemError = "Erro no Sistema";
$langSystemMessage = "Mensagem do Sistema";
$langWrongPassword = "Senha incorreta";
// RUSSIAN
// By Roman Svetlov (rtype@mail.ru)
$langAdminError = "ïÛÉÂËÁ ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ";
$langBsGuestbook = "çÏÓÔÅ×ÁÑ ËÎÉÇÁ BIG SAM";
$langChPassword = "éÚÍÅÎÉÔØ ÐÁÒÏÌØ";
$langEmail = "E-mail :";
$langEntry = "úÁÐÉÓØ";
$langGbAdmin = "áÄÍÉÎÉÓÔÒÉÒÏ×ÁÎÉÅ ÇÏÓÔÅ×ÏÊ ËÎÉÇÉ";
$langMessage = "óÏÏÂÝÅÎÉÅ :";
$langName = "éÍÑ :";
$langnewPassword = "HÏ×ÙÊ ÐÁÒÏÌØ :";
$langOpenError = "ïÛÉÂËÁ ÏÔËÒÙÔÉÑ ÆÁÊÌÁ !<br>÷ÏÚÍÏÖÎÏ ÚÁÐÒÅÝÅÎÁ ÚÁÐÉÓØ × ÄÉÒÅËÔÏÒÉÀ.";
$langPassChanged = "ðÁÒÏÌØ ÉÚÍÅÎÅÎ.";
$langPassError = "ðÁÒÏÌÉ ÒÁÚÌÉÞÎÙ !";
$langPassword = "éÚÍÅÎÉÔÅ ÐÁÒÏÌØ <i>Big Sam</i>";
$langRetype = "ðÏ×ÔÏÒÉÔÅ ÎÏ×ÙÊ ÐÁÒÏÌØ :";
$langSubmit = "ïÓÔÁ×ÉÔØ ÚÁÐÉÓØ";
$langSubmitModif = "ðÏÄÔ×ÅÒÄÉÔØ ÉÚÍÅÎÅÎÉÑ";
$langSystemError = "óÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ";
$langSystemMessage = "óÉÓÔÅÍÎÏÅ ÓÏÏÂÝÅÎÉÅ";
$langWrongPassword = "HÅÐÒÁ×ÉÌØÎÙÊ ÐÁÒÏÌØ ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ";
// CREOLE
// By Pascal Lombard (plombard_00@yahoo.fr)
$langAdminError = "Administratér'la twompé koy'";
$langBsGuestbook = "BIG SAM - Livre d'Or";
$langChPassword = "Changé passwod'la";
$langEmail = "Ba moin email ou :";
$langEntry = "Ladja pawol'";
$langGbAdmin = "Administré bagay'la";
$langMessage = "Sa ki pawol'ou :";
$langName = "Sa ki nomw' ti mal' ?";
$langnewPassword = "Ba moin a bel ti passwod :";
$langOpenError = "An pé pa wouvè fichier'a!<br>ès ou ni cé dwouèt'la ?";
$langPassChanged = "Passwod'la fini changé";
$langPassError = "Cé dé passwod'la pa pareil.";
$langPassword = "Changé passwod <i>Big Sam</i>'la";
$langRetype = "Tapé'y enco :";
$langSubmit = "Vwéyé pawol'la";
$langSubmitModif = "Changé tout'cé bagay'la";
$langSystemError = "Systèm'la pa ka maché";
$langSystemMessage = "Tann'bien ! Systèm'la ka diw";
$langWrongPassword = "An-an, ti mal'! Sa pa passwod'la !";
// CATALAN
// By Alfredo Prades (afprades@yahoo.es----http://pagina.de/terrik)
$langAdminError = "Error del administradoe";
$langBsGuestbook = "BIG SAM Guestbook";
$langChPassword = "Canvi del pass";
$langEmail = "E-mail: ";
$langEntry = "Element: ";
$langGbAdmin = "Administració del llista de visites";
$langMessage = "Mensaje: ";
$langName = "Nom: ";
$langnewPassword = "Nou pass: ";
$langOpenError = "Error de escritura de ficher!<br>Verifica que es posible escriure en este directori.";
$langPassChanged = "Se ha canviat el pass.";
$langPassError = "Els pass no corresponen!";
$langPassword = "Cavie el pass de <i>Big Sam</i>";
$langRetype = "Confirme el seu nou pass: ";
$langSubmit = "Envia ";
$langSubmitModif = "Envia les modificacions";
$langSystemError = "Error Sistema";
$langSystemMessage = "Mensaje del sistema";
$langWrongPassword = "Pass Incorrecte";
// NORWEGIAN
// By Lasse G. Dahl (news@lassedahl.com)
$langAdminError = "Administrasjonsfeil";
$langBsGuestbook = "Big Sam Gjestebok";
$langChPassword = "Endre passord";
$langEmail = "E-post:";
$langEntry = "Oppføring";
$langGbAdmin = "Gjestebokadministrasjon";
$langMessage = "Melding:";
$langName = "Navn:";
$langnewPassword = "Nytt passord:";
$langOpenError = "Feil ved åpning av fil!<br>Kontroller at serveren har skrivetilgang i denne katalogen.";
$langPassChanged = "Passordet er endret.";
$langPassError = "Passordene stemmer ikke overens!";
$langPassword = "Endre <i>BIG SAM</I>-passord";
$langRetype = "Gjenta passord:";
$langSubmit = "Send din melding";
$langSubmitModif = "Send endring";
$langSystemError = "Systemfeil";
$langSystemMessage = "Systemmelding";
$langWrongPassword = "Feil administratorpassord";
// SLOVAK
// By Marek Grac (xgrac@informatics.muni.cz)
$langAdminError = "Chyba pri administrácii";
$langBsGuestbook = "BIG SAM Guestbook";
$langChPassword = "Zmeni» heslo";
$langEmail = "E-mail :";
$langEntry = "Správa";
$langGbAdmin = "Administrácia knihy náv¹tev";
$langMessage = "Správa :";
$langName = "Meno :";
$langnewPassword = "Nové heslo :";
$langOpenError = "Chyba pri otváraní súboru!<br>Ubezpeète sa, ¾e je povolený zápis do dátového súboru.";
$langPassChanged = "Heslo bolo zmenené";
$langPassError = "Zadané heslá nie sú rovnaké!";
$langPassword = "Zmeni» heslo administrátora <i>Big Sam</i>";
$langRetype = "Zopakova» nové heslo :";
$langSubmit = "Posla» správu";
$langSubmitModif = "Potvrdi» zmeny";
$langSystemError = "Systémová chyba";
$langSystemMessage = "Systémová správa";
$langWrongPassword = "Nesprávne heslo administrátora";
*/
/*******************************************
* Configuration Step 2 : Carbon Copy Email *
*******************************************/
// carbonCopy = 1 enables mail sending to mailRecipient.
// mailRecipient receives a mail each times an entry is entered (if carbonCopy = 1)
// mailSubject is the subject of the mail which is sent.
$carbonCopy = 0;
$mailRecipient = "your.mail@your.isp";
$mailSubject = "[BIG SAM] New Guestbook Entry";
/********************************
* Configuration Step 3 : Colors *
********************************/
// Choosing colors (Remove the unwanted color-model)
/*
// Standard (Greys, bright background)
$colorWhite = "\"#FFFFFF\"";
$colorBlack = "\"#000000\"";
$colorHeads = "\"#666666\"";
$colorBody1 = "\"#EEEEEE\"";
$colorBody2 = "\"#DDDDDD\"";
*/
// The Following is the BIG SAM standard
$colorWhite = "\"#FFFFFF\"";
$colorBlack = "\"#000000\"";
$colorHeads = "\"#42426F\"";
$colorBody1 = "\"#FFF8DC\"";
$colorBody2 = "\"#EFE8CC\"";
// Data submission form colors
$formHeadColor = $colorHeads;
$formBodyColor = $colorBody1;
$formTailColor = $colorBody2;
$formHeadText = $colorWhite;
$formBodyText = $colorBlack;
// Guestbook entries colors
$entryHeadColor = $colorHeads;
$entryBodyColor1 = $colorBody2;
$entryBodyColor2 = $colorBody1;
$entryHeadText = $colorWhite;
$entryBodyText1 = $colorBlack;
$entryBodyText2 = $colorHeads;
// Messages colors
$adminHeadColor = $colorHeads;
$adminHeadText = $colorWhite;
$adminBodyColor1 = $colorBody2;
$adminBodyText1 = $colorBlack;
$adminBodyColor2 = $colorBody1;
$adminBodyText2 = $colorHeads;
/********************************
* Configuration Step 4 : Header *
********************************/
function displayHeader()
{
global $version;
header ("Expires: Sat, 01 Jan 2000 00:00:00 GMT");
echo ("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n");
echo ("<!-- BIG SAM v.$version * Built_In Guestbook / Stand_Alone Module * http://bigsam.gezzed.net/ -->\n");
// You migh use and include instead of all this :
// include ("head.inc");
echo ("<html>\n");
echo ("<head><title>Big Sam GuestBook</title></head>");
echo ("<body bgcolor=\"#FFFFFF\">\n");
}
/********************************
* Configuration Step 5 : Footer *
********************************/
function displayFooter()
{
echo ("</body></html>");
}
/******************************************************
* Configuration Step 6 : Number of messages displayed *
******************************************************/
// Number of fields to be displayed simultaneously.
// To display everything, set $displayStep to 0.
$displayStep = 20;
/************************************************
* Configuration Step 7 : Allow AutoLink Suystem *
************************************************/
$allowAutoLink=1;
/************************
* End of Configuration *
************************/
// $absoluteScriptPath is the name of the current script (this file) and which is going to
// be modified by itself. This means that (theoretically) this file can be
// placed anywhere on the system, with any fileName.
$absoluteScriptPath = $PATH_TRANSLATED;
$relativeScriptPath = $PHP_SELF;
// when the php preprocessor is installed as an independant binary (as CGI).
if ($PATH_INFO!="")
{
$relativeScriptPath = $PATH_INFO;
}
// to be used when $PHP_SELF contains virtual directory reference
// (for multi-users servers, eg : free.fr, online.fr ...)
if (($SERVER_NAME=="php.proxad.net")||(($SERVER_NAME=="php3.pro.proxad.net")))
{
$relativeScriptPath = substr($relativeScriptPath, strpos(substr($relativeScriptPath, 1), "/")+1);
}
$theName=substr($absoluteScriptPath, 0, strrpos($absoluteScriptPath, "."));
$extension=substr($absoluteScriptPath, strrpos($absoluteScriptPath, ".")+1);
// The dataFile contains all the guestbook entries, and $adminpassword .
// $adminpassword is the password which will be asked for any administration
// actions. This password could be changed only if in admin mode (old
// $adminpassword matches $admin).
// Defines the name of the database file where the entries are stored.
$dataFile = "${theName}.dat.${extension}";
//******************************************************************************
// function displayForm : Display the form which enables the client to type a
// message.
function displayForm()
{
global $relativeScriptPath;
$borderThickness = 3;
global $formHeadColor;
global $formBodyColor;
global $formTailColor;
global $formHeadText;
global $formBodyText;
global $langName;
global $langEmail;
global $langMessage;
global $langSubmit;
// Writing HTML Code
echo ("<center>\n");
echo ("<form method=\"POST\" action=\"$relativeScriptPath\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"3\">\n");
echo ("<tr bgcolor=$formHeadColor>\n");
echo ("<td><font color=$formHeadText><b>$langName</b></font><input name=\"name\" size=\"20\" maxlength=\"50\"></td>\n");
echo ("<td> </td>\n");
echo ("<td align=right><font color=$formHeadText><b>$langEmail</b></font><input name=\"email\" size=\"20\" maxlength=\"50\"></td>\n");
echo ("</tr>\n");
echo ("<tr bgcolor=$formBodyColor><td colspan=\"3\">\n");
echo ("<font color=$formBodyText><b>$langMessage</b></font><br>\n");
echo ("<center><textarea name=\"message\" cols=\"60\" rows=\"7\"></textarea></center>\n");
echo ("</td></tr>\n");
echo ("<tr bgcolor=$formTailColor><td colspan=\"3\" align=\"right\">\n");
echo ("<input type=\"submit\" value=\"$langSubmit\">");
echo ("</td></tr>\n");
echo ("</table>\n");
echo ("</form>\n");
echo ("</center>\n");
}
//******************************************************************************
// function displayMessage displays the $errorMessage error message.
function displayMessage($errorMessage,$msgType)
{
global $adminHeadColor;
global $adminHeadText;
global $adminBodyColor1;
global $adminBodyText1;
global $adminBodyColor2;
global $adminBodyText2;
global $langAdminError;
global $langSystemError;
global $langSystemMessage;
global $langBsGuestbook;
displayHeader();
echo ("<table width=\"100%\" height=\"100%\"><tr><td width=\"100%\" valign=\"middle\" align=\"center\">");
echo ("<table cellspacing=\"0\" border=\"0\" width=\"250\"><tr><td bgcolor=$adminHeadColor>");
echo ("<font Color=$adminHeadText size=\"-3\"> $langBsGuestbook</font><br>");
echo ("</td></tr><tr><td bgcolor=$adminBodyColor1><font color=$adminBodyText1>");
if ($msgType=="1") // Admin Message
echo ("<i> $langAdminError</i>");
if ($msgType=="2") // System Error
echo ("<i> $langSystemError</i>");
if ($msgType=="3") // System Message
echo ("<i> $langSystemMessage</i>");
echo ("</font>");
echo ("</td></tr><tr><td bgcolor=$adminBodyColor2 align=\"center\">");
echo ("<font color=$adminBodyText2>");
echo ("<br><b>$errorMessage</b><br><br>");
echo ("</font></td></tr></table><p> </p>\n");
echo ("</td></tr></table>");
displayFooter();
exit;
}
//******************************************************************************
// function standardizeText filters ambiguous chains in $str
function standardizeStoredText($str)
{
$str = str_replace("\\'", "'", $str);
$str = str_replace("\\\"", "\"", $str);
$str = htmlspecialchars($str);
$str = str_replace("\n", "<br>", $str);
$str = str_replace("$", "$", $str);
return $str;
}
function standardizeDisplayedText($str)
{
return $str;
}
function standardizeAdminText($str)
{
return $str;
}
function seekHttp($rawText)
{
$pattern = array(
"/http:\/\/((\w|\.|\?|\%|=|\/|-)*)/",
"/mailto:((\w|\.|@|-)*)/");
$replacement = array(
"<a href=\"http://\\1\" target=\"_blank\">http://\\1</a>",
"<a href=\"mailto:\\1\">\\1</a>");
$hyperLinkedText=preg_replace($pattern, $replacement, $rawText);
return $hyperLinkedText;
}
//******************************************************************************
// function Xfopen : opens a file $fileName and locks it
function Xfopen($fileName, $openMode, $sharing)
{
global $langOpenError;
$fp=@fopen($fileName, $openMode);
if (!$fp)
{
displayMessage($langOpenError,2);
}
if ($sharing==true)
{
$op=1;
}
else
{
$op=2;
}
if (!@flock($fp,$op))
{
@flock($fp,3);
displayMessage("<i>flock</i> timeout",2);
}
return $fp;
}
//******************************************************************************
// function Xfclose : unlocks the file $fp and closes it
function Xfclose($fp)
{
@flock($fp,3);
@fclose($fp);
}
//******************************************************************************
// function fullDisplay
function fullDisplay()
{
global $displayStep,$displayBegin, $maxDisplay ;
global $entryHeadColor,$entryHeadText, $entryBodyColor1,$entryBodyText1, $entryBodyColor2,$entryBodyText2 ;
global $relativeScriptPath;
global $index;
global $archive_mail, $archive_name, $archive_text, $archive_date;
global $allowAutoLink;
// Checks if $displayBegin is not too large (Thanks to Ahmet Sabri ALPER <salper@olympos.org>)
if ($displayBegin>$maxDisplay)
{
$displayBegin=$maxDisplay-$displayStep+1;
}
displayHeader();
// Displays the entry form to enable the client to type a message.
displayForm();
if ($index==0)
{
displayFooter();
return;
}
echo ("<p> </p>\n");
// Message arrays are displayed here :
echo "<center>\n";
// Displaying all the entries.
if ($displayStep==0)
{
$displayBegin=1;
$displayStep=$index;
}
if ($displayBegin==1)
{
$startAt=$index % $displayStep;
if ($startAt==0) $startAt=$displayStep;
}
else
{
$startAt=$displayBegin+$displayStep-1;
}
for ($msgNumber=$startAt ; $msgNumber>=$displayBegin ; $msgNumber--)
{
echo ("<table cellspacing=\"0\" border=\"0\" width=\"600\"><tr><td bgcolor=$entryHeadColor>");
echo ("<font color=$entryHeadText size=\"-3\"> $archive_date[$msgNumber] </font>");
echo ("</td></tr><tr><td bgcolor=$entryBodyColor1>");
echo ("<font Color=$entryBodyText1><b>");
if ($archive_mail[$msgNumber]!="")
{
echo ("$msgNumber : <a title=\"".standardizeDisplayedText($archive_mail[$msgNumber])."\" href=\"mailto:".standardizeDisplayedText($archive_mail[$msgNumber])."\">".standardizeDisplayedText($archive_name[$msgNumber])."</a>");
}
else
{
echo ("$msgNumber : ".standardizeDisplayedText($archive_name[$msgNumber]));
}
echo ("</b></font>");
echo ("</td></tr><tr><td bgcolor=$entryBodyColor2>");
echo ("<font color=$entryBodyText2>");
if ($allowAutoLink==1) echo ("<b>".seekHttp(standardizeDisplayedText($archive_text[$msgNumber]))."</b>");
else echo ("<b>".standardizeDisplayedText($archive_text[$msgNumber])."</b>");
echo ("</font></td></tr></table><br><br>\n");
}
echo ("<p> </p>\n");
for($i=1;$i<=$index;$i=$nextEnd+1)
{
$nextBegin = $i;
if ($i==1)
{
$nextEnd=$index % $displayStep;
if ($nextEnd==0) $nextEnd=$displayStep;
}
else $nextEnd = $i+$displayStep-1;
if ($displayBegin==$nextBegin && $nextEnd!=$nextBegin) echo ("<tt>[</tt>$nextBegin-$nextEnd<tt>]</tt>\n");
else if ($displayBegin==$nextBegin && $nextEnd==$nextBegin) echo ("<tt>[</tt>$nextBegin<tt>]</tt>\n");
else if ($nextEnd==$nextBegin) echo ("<a href=\"$relativeScriptPath?displayBegin=$nextBegin\"><tt>[</tt>$nextBegin<tt>]</tt></a>\n");
else echo ("<a href=\"$relativeScriptPath?displayBegin=$nextBegin\"><tt>[</tt>$nextBegin-$nextEnd<tt>]</tt></a>\n");
}
echo "</center>\n";
displayFooter();
}
//******************************************************************************
function readData($resetBegin)
{
global $adminpassword;
global $index;
global $dataFile;
global $archive_mail, $archive_name, $archive_text, $archive_date;
global $displayBegin, $displayStep, $maxDisplay;
// Includes automatically filled data arrays :
$index = 0;
$fout=Xfopen($dataFile, "r", true);
include($dataFile);
Xfclose($fout);
// From now, $index will indicate the number of data entries.
// Beginning of the data to be displayed, default = 1
if (!isset($displayBegin)) $displayBegin="";
if ($displayBegin=="" || $resetBegin==1)
{
$displayBegin = $index-$displayStep+1;
if ($displayBegin<=0) $displayBegin=1;
}
// Sets the maximum that $displayBegin can reach
$maxDisplay = $index;
}
//******************************************************************************
// If the Datafile does not exist, creates it.
if (!file_exists(${dataFile}))
{
$fout = Xfopen($dataFile, "w+", false);
fputs($fout, "<?\n");
fputs($fout, "\$adminpassword = \"bigsam\";\n");
fputs($fout, "\$archive_name[++\$index] = \"The BigSam Team\";\n");
fputs($fout, "\$archive_mail[ \$index] = \"bigsam@gezzed.net\";\n");
fputs($fout, "\$archive_date[ \$index] = \"11th March 2001 - 12:00:00 PM\";\n");
fputs($fout, "\$archive_text[ \$index] = \"Thank you for using Big Sam v.$version.\";\n");
fputs($fout, "?>");
Xfclose ($fout);
}
if (!isset($admin))
{
if (!isset($name)) { $name=""; $message=""; }
if ($name=="" || $message=="")
{
/****************************************************************************************
* Use Case no 1-A *
* *
* This case is encountered when a client simply wants to add a message to the *
* guestbook. (Every variable is empty); *
************************************************************************************/
readData(0);
fullDisplay();
exit;
}
else
{
/********************************************************************************
* Use Case no 1-B *
* *
* Case is encountered when a client has just filled in the appropriate fields *
* (name, mail, message). *
* $name = "Some Name" *
* $email = "Some@Email" *
* $message = "Some Message" *
* Simply add message in the top of all previous messages. *
********************************************************************************/
$position = filesize($dataFile);
$fout = Xfopen($dataFile, "r+", false);
fseek($fout,$position-2);
$insert_msgdate = date( "dS F Y - h:i:s A" );
$name=standardizeStoredText($name);
$email=standardizeStoredText($email);
$message=standardizeStoredText($message);
fputs ($fout,"\$archive_name[++\$index] = \"$name\";\n");
fputs ($fout,"\$archive_mail[ \$index] = \"$email\";\n");
fputs ($fout,"\$archive_date[ \$index] = \"$insert_msgdate\";\n");
fputs ($fout,"\$archive_text[ \$index] = \"$message\";\n");
fputs ($fout,"\n?>");
Xfclose($fout);
// Sending a mail to $mailRecipient if $carbonCopy=1, with the subject $mailSubject.
if ($carbonCopy==1)
{
$message = str_replace("<br>", "\n", $message);
$mailBody = "From: $name <$email>\n$insert_msgdate\n\n$message";
mail($mailRecipient,$mailSubject,$mailBody,"From: $email\nReply-to: $name <$email>");
}
if (strpos($HTTP_REFERER, "?")==false) $page=$HTTP_REFERER;
else $page=substr($HTTP_REFERER, 0, strpos($HTTP_REFERER, "?"));
header("Location: $page?");
exit;
}
}
else
{
readData(0);
if ($admin==$adminpassword)
{
if ($command=="")
{
displayHeader();
/************************************************************************
* Use Case no 2-A *
* *
* Admin mode (The administrator can modify password, fields, or remove *
* messages). *
* $admin = $adminpassword *
* Shows a password modification form. *
* Shows all messages and enables to modify/delete them. *
************************************************************************/
echo("<center><h2>BIG SAM</h2><h4>$langGbAdmin</h4></center>\n");
echo("<br>\n");
// Display the form which enables the admin to change his password
echo ("<center><form method=\"POST\" action=\"$relativeScriptPath\">\n");
echo ("<table cellspacing=\"0\" border=\"0\">\n");
echo ("<tr><td bgcolor=$adminHeadColor colspan=\"2\"><font color=$adminHeadText>\n");
echo (" <b>$langPassword</b>.</font></td></tr>\n");
echo ("<tr><td align=right bgcolor=$adminBodyColor2>");
echo ("<font color=$adminBodyText2> $langnewPassword</font></td>\n");
echo ("<td align=left bgcolor=$adminBodyColor2>");
echo ("<input type=\"password\" name=\"newPassword1\"> </td></tr>\n");
echo ("<tr><td align=\"right\" bgcolor=$adminBodyColor2>");
echo ("<font color=$adminBodyText2> $langRetype</font></td>\n");
echo ("<td align=left bgcolor=$adminBodyColor2>");
echo ("<input type=\"password\" name=\"newPassword2\"> </td></tr>\n");
echo ("<tr><td bgcolor=$adminBodyColor1 colspan=2 align=\"center\">\n");
echo ("<input type=\"hidden\" name=\"admin\" value=\"$admin\">\n");
echo ("<input type=\"hidden\" name=\"command\" value=\"passwd\">\n");
echo ("<input type=\"submit\" value=\"$langChPassword\"></td></tr>\n");
echo ("</table>\n");
echo ("</form></center>\n");
echo("<br><hr><br>\n");
// Message arrays are displayed here in forms in order to modify them :
echo ("<center><form method=\"POST\" action=\"$relativeScriptPath\">\n");
for ($i=1 ; $i<=$index ; $i++)
{
$msgNumber = $index - $i + 1;
$str = str_replace("<br>", "\n", $archive_text[$msgNumber]);
echo ("<table cellspacing=\"0\" cellpadding=\"3\"><tr><td colspan=\"4\" bgcolor=$adminHeadColor>\n");
echo ("<font color=$adminHeadText><b> ");
echo ("$langEntry #$msgNumber</b>.</font> </td></tr>\n");
echo ("<tr bgcolor=$adminBodyColor2>\n");
echo ("<td> <input type=\"checkbox\" name=\"keep${msgNumber}\" checked> </td>\n");
echo ("<td><input name=\"name${msgNumber}\" value=\"".standardizeAdminText($archive_name[$msgNumber])."\"></td>\n");
echo ("<td><input name=\"email${msgNumber}\" value=\"".standardizeAdminText($archive_mail[$msgNumber])."\"></td>\n");
echo ("<td><input name=\"date${msgNumber}\" value=\"".standardizeAdminText($archive_date[$msgNumber])."\"></td>\n");
echo ("<tr bgcolor=$adminBodyColor1>\n");
echo ("<td colspan=\"4\" align=\"center\"><textarea cols=\"60\" rows=\"2\" name=\"message${msgNumber}\">".standardizeAdminText($str));
echo ("</textarea></td>\n</tr></table>\n<br>\n");
}
echo ("<input type=\"hidden\" name=\"admin\" value=\"$admin\">\n");
echo ("<input type=\"hidden\" name=\"index\" value=\"$index\">\n");
echo ("<input type=\"hidden\" name=\"command\" value=\"modify\">\n");
echo ("<input type=\"submit\" value=\"$langSubmitModif\">\n");
echo ("</form></center>\n");
displayFooter();
exit;
}
else if ($command=="passwd")
{
// Use Case no 2-B
// Admin mode (The administrator is modifying his password.).
// $admin = $adminpassword
// $newPassword1 = "New Password 1"
// $newPassword2 = "New Password 2"
// Check if $newPassword1 matches $newPassword2
// Set the $adminpassword line to :
// $adminpassword = "$newPassword1" in the dataFile
if($newPassword1!=$newPassword2)
{
// The passwords doesn't match
displayMessage("$langPassError",1);
}
else
{
// Rewrites the whole Datafile with the new password, and all the entries.
$fout = Xfopen($dataFile, "w", false);
fputs ($fout,"<?\n");
fputs ($fout,"\$adminpassword = \"$newPassword1\";\n");
for ($i=1 ; $i<=$index ; ++$i)
{
fputs ($fout,"\$archive_name[++\$index] = \"${archive_name[$i]}\";\n");
fputs ($fout,"\$archive_mail[ \$index] = \"${archive_mail[$i]}\";\n");
fputs ($fout,"\$archive_date[ \$index] = \"${archive_date[$i]}\";\n");
fputs ($fout,"\$archive_text[ \$index] = \"${archive_text[$i]}\";\n");
}
fputs ($fout,"?>");
Xfclose($fout);
displayMessage("$langPassChanged",3);
exit;
}
}
else if ($command=="modify")
{
/********************************************************************************
* Use Case no 2-C *
* *
* Admin mode (The administrator is updating entries). *
* $admin = $adminpassword *
* $nameXXX = "Modified name (no XXX)" *
* $emailXXX = "Modified email (no XXX)" *
* $messageXXX = "Modified message (no XXX)" *
* $keep = "on" or "" *
* Check if $admin matches $adminpassword. *
* Rewrites ALL the fields except when $keepXXX = "" *
* Rewrites the whole Datafile with the new password, and all the entries. *
********************************************************************************/
$fout = Xfopen($dataFile, "w", false);
fputs ($fout,"<?\n");
fputs ($fout,"\$adminpassword = \"$adminpassword\";\n");
for ($i=1 ; $i<=$index ; $i++)
{
// Get values from the form, and standardize them
$variable="name$i";
$name=standardizeStoredText("${$variable}");
$variable="email$i";
$email=standardizeStoredText("${$variable}");
$variable="date$i";
$insert_msgdate=standardizeStoredText("${$variable}");
$variable="message$i";
$message=standardizeStoredText("${$variable}");
$variable="keep$i";
if (${$variable}!="")
{
fputs ($fout,"\$archive_name[++\$index] = \"$name\";\n");
fputs ($fout,"\$archive_mail[ \$index] = \"$email\";\n");
fputs ($fout,"\$archive_date[ \$index] = \"$insert_msgdate\";\n");
fputs ($fout,"\$archive_text[ \$index] = \"$message\";\n");
}
}
fputs ($fout,"?>");
Xfclose($fout);
if (strpos($HTTP_REFERER, "?")==false) $page=$HTTP_REFERER;
else $page=substr($HTTP_REFERER, 0, strpos($HTTP_REFERER, "?"));
header("Location: $page?");
exit;
}
}
else
{
/************************************************
* Use Case no 2-Z *
* *
* If $admin does NOT match $adminpassword. *
* $admin != $adminpassword *
* Error message : "Wrong Admin Password" *
************************************************/
displayMessage("$langWrongPassword",1);
}
}
?>