From fe42fc41235e4430af37a0b2736f46e89c7e71a0 Mon Sep 17 00:00:00 2001 From: zlaxy Date: Fri, 29 Sep 2017 11:54:49 +0300 Subject: [PATCH] Added categories and switchable fields --- README | 11 ++- administration.php | 58 ++++++++++++--- index.php | 172 ++++++++++++++++++++++++++------------------- settings.php | 13 ++++ settings_ru.php | 13 ++++ 5 files changed, 184 insertions(+), 83 deletions(-) diff --git a/README b/README index 50a8f25..73b86a7 100644 --- a/README +++ b/README @@ -1,7 +1,16 @@ -PHPCSV Guestbook version 0.97 +PHPCSV Guestbook version 0.98 Simple php guestbook with csv file data storage. +Features: + - Captcha + - Admin panel + - Search + - Images upload + - 'Read More' button + - Pagination + - Categories + Working example: https://zlaxyi.soundragon.su/gb PHPCSV Guestbook requires PHP 5.0 or higher version. diff --git a/administration.php b/administration.php index 215939c..22999e9 100644 --- a/administration.php +++ b/administration.php @@ -13,7 +13,7 @@ function ReadEntries() { $fhandle=fopen($GBdata,"r") or $DataStatus="empty"; for($e=0; $entrydata=fgetcsv($fhandle, 16384, ","); $e++) { $Entries["$e"]=$entrydata; - $Entries["$e"][7]=$e+1; + $Entries["$e"][10]=$e+1; } fclose($fhandle); if (!$Entries[0]) $DataStatus="empty"; return $Entries; @@ -24,7 +24,7 @@ function SaveEntries() { global $AdminEntries; $fhandle=fopen($GBdata,"w"); foreach($AdminEntries as $e=>$Entry) { - unset($Entry[7]); + unset($Entry[10]); fputcsv($fhandle,$Entry); } fclose($fhandle); @@ -35,7 +35,7 @@ function Search($SearchQuery) { $SearchResultCount=0; $SearchResult=false; foreach($Entries as $e=>$Entry) { - for($p=0; $p<7; $p++) { + for($p=0; $p<9; $p++) { if (mb_stristr($Entry[$p],$SearchQuery)) { $SearchResult[$SearchResultCount][0]=$e; $SearchResult[$SearchResultCount][1]=$Entry; @@ -72,6 +72,20 @@ function AdminHeaderView() { } } +function SingleEntry($Entry) { + global $Titles; + global $GBcityfield; + global $GBlinkfield; + global $GBsubjectfield; + global $GBcategoryfield; + echo " ",($Entry[10]),"$Entry[0]"; + if ($GBcityfield) echo "$Entry[1]"; + if ($HBlinkfield) echo "$Entry[2]"; + if ($GBsubjectfield) echo "$Entry[7]"; + if ($GBcategoryfield) echo "$Entry[8]"; + echo "$Entry[3]",nl2br($Entry[4]),"",nl2br($Entry[6]),"",date("j.m.Y, H:i",$Entry[5]),"\n"; +} + function AdminEntriesView() { global $Titles; global $DataStatus; @@ -80,6 +94,10 @@ function AdminEntriesView() { global $AdminEntries; global $GBpagination; global $GBtextlenght; + global $GBcityfield; + global $GBlinkfield; + global $GBsubjectfield; + global $GBcategoryfield; if ($_SESSION["SessionStatus"]==(md5($GBadmin.$GBpassword))) if ($DataStatus=="empty") echo "$Titles[EmptyFile]\n"; else if ($_SESSION["DeleteStatus"]=="deletion") { echo " $Titles[AdminSureDel] ",count($_SESSION["DeleteEntries"])," $Titles[AdminSureDelMessages]?\n"; @@ -91,9 +109,19 @@ function AdminEntriesView() { echo " $Titles[AdminMessage] ", ($_SESSION["EditStatus"]),", ",date("j.m.Y, H:i",$AdminEntries[($_SESSION["EditStatus"]-1)][5]),":
\n"; echo "
\n"; echo " $Titles[AdminName]:
\n"; - echo " $Titles[City]
\n"; - echo " $Titles[Link]
\n"; + if ($GBcityfield) echo " $Titles[City]
\n"; + if ($GBlinkfield) echo " $Titles[Link]
\n"; echo " $Titles[Email]
\n"; + if ($GBsubjectfield) echo " $Titles[Subject]
\n"; + if ($GBcategoryfield) { + echo " $Titles[Category]
\n"; + } echo " $Titles[AdminMessage]:
\n
\n"; echo " $Titles[Response]:
\n
\n"; echo " "; @@ -146,18 +174,28 @@ function AdminEntriesView() { } echo "
\n"; echo "
\n"; - echo "\n \n"; + echo "
$Titles[AdminName]$Titles[City]$Titles[Link]$Titles[Email]$Titles[AdminMessage]$Titles[Response]$Titles[AdminDate]
\n "; + if ($GBcityfield) echo ""; + if ($HBlinkfield) echo ""; + if ($GBsubjectfield) echo ""; + if ($GBcategoryfield) echo ""; + echo "\n"; for ($e = ($GBpagination*$CurrentPage); $e < ($GBpagination*($CurrentPage+1)); $e++) { if ($e>=count($Entries)) break; $Entry = $Entries[$e]; - echo " \n"; + SingleEntry($Entry); } $_SESSION['currentpage']=$CurrentPage; } else { echo "\n"; - echo "
$Titles[AdminName]$Titles[City]$Titles[Link]$Titles[Subject]$Titles[Category]$Titles[Email]$Titles[AdminMessage]$Titles[Response]$Titles[AdminDate]
",($Entry[7]),"$Entry[0]$Entry[1]$Entry[2]$Entry[3]",nl2br($Entry[4]),"",nl2br($Entry[6]),"",date("j.m.Y, H:i",$Entry[5]),"
\n \n"; + echo "
$Titles[AdminName]$Titles[City]$Titles[Link]$Titles[Email]$Titles[AdminMessage]$Titles[Response]$Titles[AdminDate]
\n "; + if ($GBcityfield) echo ""; + if ($HBlinkfield) echo ""; + if ($GBsubjectfield) echo ""; + if ($GBcategoryfield) echo ""; + echo "\n"; $Entries=array_reverse($AdminEntries); - foreach($Entries as $e=>$Entry) echo " \n"; + foreach($Entries as $e=>$Entry) SingleEntry($Entry); } echo "
$Titles[AdminName]$Titles[City]$Titles[Link]$Titles[Subject]$Titles[Category]$Titles[Email]$Titles[AdminMessage]$Titles[Response]$Titles[AdminDate]
",($Entry[7]),"$Entry[0]$Entry[1]$Entry[2]$Entry[3]",nl2br($Entry[4]),"",nl2br($Entry[6]),"",date("j.m.Y, H:i",$Entry[5]),"
\n"; echo " \n"; @@ -192,6 +230,8 @@ if ($_SESSION["SessionStatus"]==(md5($GBadmin.$GBpassword))) { $AdminEntries[($_SESSION["EditStatus"]-1)][3]=$_POST["editmail"]; $AdminEntries[($_SESSION["EditStatus"]-1)][4]=$_POST["edittext"]; $AdminEntries[($_SESSION["EditStatus"]-1)][6]=$_POST["editresp"]; + $AdminEntries[($_SESSION["EditStatus"]-1)][7]=$_POST["editsubj"]; + $AdminEntries[($_SESSION["EditStatus"]-1)][8]=$_POST["editcategory"]; SaveEntries(); Unset($_SESSION["EditStatus"]); $AdminEntries=ReadEntries(); diff --git a/index.php b/index.php index 6d82d43..d03df7b 100644 --- a/index.php +++ b/index.php @@ -12,9 +12,18 @@ function SendMail() { global $Titles; global $GBnotificationmailto; global $GBnotificationmailfrom; - $message=$_POST['name']." ".$Titles[From]." ".$_POST['from']."(" - .$_POST['link'].", ".$_POST['email'].") ".$Titles[Wrote].":\r\n\r\n".$_POST['text'] - ."\r\n\r\n_____\r\n".$Titles[MailAdmin]; + global $GBcityfield; + global $GBlinkfield; + global $GBsubjectfield; + global $GBcategoryfield; + $message=$_POST['name']; + if ($GBcityfield) $message=$message." ".$Titles[From]." ".$_POST['from']; + $message=$message."("; + if ($GBlinkfield) $message=$message.$_POST['link'].", "; + $message=$message.$_POST['email'].") ".$Titles[Wrote]; + if ($GBsubjectfield) $message=$message." ".$_POST['subj']; + if ($GBcategoryfield) $message=$message." [".$_POST['category']."]"; + $message=$message.":\r\n\r\n".$_POST['text']."\r\n\r\n_____\r\n".$Titles[MailAdmin]; mail($GBnotificationmailto, $Titles[MailSubject], $message, "From: ".$GBnotificationmailfrom." \r\n"."Content-type: text/plain; charset=utf-8\r\n" ."X-Mailer: PHP/".phpversion()); @@ -26,7 +35,7 @@ function ReadEntries() { $fhandle=fopen($GBdata,"r") or $DataStatus="empty"; for($e=0; $entrydata=fgetcsv($fhandle, 16384, ","); $e++) { $Entries["$e"]=$entrydata; - $Entries["$e"][7]=$e+1; + $Entries["$e"][10]=$e+1; } fclose($fhandle); if (!$Entries[0]) $DataStatus="empty"; @@ -57,14 +66,21 @@ function AddEntry() { global $Titles; global $PageStatus; global $UploadedFile; + global $GBcityfield; + global $GBlinkfield; + global $GBsubjectfield; + global $GBcategoryfield; $NewEntry[name]=$_POST['name']; - $NewEntry[from]=$_POST['from']; - $NewEntry[link]=$_POST['link']; + if ($GBcityfield) $NewEntry[from]=$_POST['from']; else $NewEntry[from]=""; + if ($GBlinkfield) $NewEntry[link]=$_POST['link']; else $NewEntry[link]=""; $NewEntry[email]=$_POST['email']; if ($UploadedFile) $NewEntry[text]=$_POST['text']."
"; else $NewEntry[text]=$_POST['text']; $NewEntry[datetime]=time(); $NewEntry[response]=""; + if ($GBsubjectfield) $NewEntry[subj]=$_POST['subj']; else $NewEntry[subj]=""; + if ($GBcategoryfield) $NewEntry[category]=$_POST['category']; else $NewEntry[category]=""; + $NewEntry[parameters]=""; $fhandle=fopen($GBdata,"a"); fputcsv($fhandle,$NewEntry); fclose($fhandle); @@ -79,31 +95,44 @@ function AddEntryView() { global $GBcaptcha; global $GBtextlenght; global $GBupload; + global $GBcityfield; + global $GBlinkfield; + global $GBsubjectfield; + global $GBcategoryfield; echo "

",$Titles[Page],"


\n"; - if ($PageStatus=="added") echo "$Titles[Added]"; else { - $captchanumber11=rand(1, 4); - $captchanumber12=rand(0, 9); - $captchanumber21=rand(1, 4); - $captchanumber22=rand(0, 9); - $_SESSION['captcha']=md5(base64_encode(($captchanumber11.$captchanumber12)+($captchanumber21.$captchanumber22))); - echo "\n"; - echo " $Titles[Name]: ($Titles[Required])
\n"; - echo " $Titles[City]:
\n"; - echo " $Titles[Link]:
\n"; - echo " $Titles[Email]: ($Titles[NotPublic])
\n"; - echo " $Titles[Text]:
\n
\n"; - if ($GBupload) { - echo " \n"; - echo "
\n"; + if ($PageStatus=="added") echo "$Titles[Added]"."
\n"; + $captchanumber11=rand(1, 4); + $captchanumber12=rand(0, 9); + $captchanumber21=rand(1, 4); + $captchanumber22=rand(0, 9); + $_SESSION['captcha']=md5(base64_encode(($captchanumber11.$captchanumber12)+($captchanumber21.$captchanumber22))); + echo "\n"; + echo " $Titles[Name]: ($Titles[Required])
\n"; + if ($GBcityfield) echo " $Titles[City]:
\n"; + if ($GBlinkfield) echo " $Titles[Link]:
\n"; + echo " $Titles[Email]: ($Titles[NotPublic])
\n"; + if ($GBsubjectfield) echo " $Titles[Subject]:
\n"; + if ($GBcategoryfield) { + echo " $Titles[Category]: ?
\n"; - echo " \n"; - echo "
\n"; - if ($PageStatus=="emptyname") echo "$Titles[EmptyName]
\n"; - if ($PageStatus=="emptytext") echo "$Titles[EmptyText]
\n"; - if ($PageStatus=="wrongimage") echo "$Titles[WrongImage]
\n"; - if ($PageStatus=="wrongcaptcha") echo "$Titles[WrongCaptcha]
\n"; + echo "
\n"; } + echo " $Titles[Text]:
\n
\n"; + if ($GBupload) { + echo " \n"; + echo "
\n"; + } + if ($GBcaptcha) echo " $Titles[Captcha]: $captchanumber11$captchanumber11$captchanumber12 $Titles[CaptchaPlus] $captchanumber21$captchanumber22$captchanumber21 = ?
\n"; + echo " \n"; + echo "\n"; + if ($PageStatus=="emptyname") echo "$Titles[EmptyName]
\n"; + if ($PageStatus=="emptytext") echo "$Titles[EmptyText]
\n"; + if ($PageStatus=="wrongimage") echo "$Titles[WrongImage]
\n"; + if ($PageStatus=="wrongcaptcha") echo "$Titles[WrongCaptcha]
\n"; } function Search($SearchQuery) { @@ -111,7 +140,7 @@ function Search($SearchQuery) { $SearchResultCount=0; $SearchResult=false; foreach($Entries as $e=>$Entry) { - for($p=0; $p<7; $p++) { + for($p=0; $p<9; $p++) { if (mb_stristr($Entry[$p],$SearchQuery)) { $SearchResult[$SearchResultCount][0]=$e; $SearchResult[$SearchResultCount][1]=$Entry; @@ -134,12 +163,49 @@ function AddSearchBar() { } } +function SinlgeEntry($Entry) { + global $Titles; + global $GBreadmore; + global $GBcityfield; + global $GBlinkfield; + global $GBsubjectfield; + global $GBcategoryfield; + echo "

",$Entry[10],". "; + if ($Entry[2]) echo ""; + echo "",$Entry[0],""; + if ($Entry[2]) echo ""; + if ($Entry[1]) echo " ",$Titles[From]," ",$Entry[1],""; + echo ", ",date("j.m.Y, H:i",$Entry[5]),", ",$Titles[Wrote]; + if (($GBsubjectfield)&&($Entry[7])) echo " ",$Titles[About]," '",$Entry[7],"'"; + if (($GBcategoryfield)&&($Entry[8])) echo " [",$Entry[8],"]"; + echo ":


\n"; + if ($GBreadmore>0) { + $Message=strip_tags($Entry[4]); + if (strlen($Message)>$GBreadmore) { + $readmorenumber="readmore".$Entry[10]; + if ($_POST[$readmorenumber]) echo " ",nl2br($Entry[4]),"
\n"; + else { + $Message = substr($Message, 0, $GBreadmore); + $Message = substr($Message, 0, strrpos($Message, ' '))."...
"; + echo " ",nl2br($Message),"
\n"; + } + } else echo " ",nl2br($Entry[4]),"
\n"; + } else echo " ",nl2br($Entry[4]),"
\n"; + if ($Entry[6]) echo "
$Titles[Response]:
\n"; + if ($Entry[6]) echo nl2br($Entry[6]),"

\n"; + echo "

\n"; +} + function EntriesView() { global $Titles; global $DataStatus; global $Entries; global $GBpagination; global $GBreadmore; + global $GBcityfield; + global $GBlinkfield; + global $GBsubjectfield; + global $GBcategoryfield; if ($DataStatus=="empty") echo "$Titles[EmptyFile]"; else if($_POST['search']&&$_POST['serachq']) { $SearchResult=Search($_POST['serachq']); @@ -170,27 +236,7 @@ function EntriesView() { else $CurrentPage=0; for ($e = ($GBpagination*$CurrentPage); $e < ($GBpagination*($CurrentPage+1)); $e++) { if ($e>=count($Entries)) break; - echo "

",$Entries[$e][7],". "; - if ($Entries[$e][2]) echo ""; - echo "",$Entries[$e][0],""; - if ($Entries[$e][2]) echo ""; - if ($Entries[$e][1]) echo " ",$Titles[From]," ",$Entries[$e][1],""; - echo ", ",date("j.m.Y, H:i",$Entries[$e][5]),", ",$Titles[Wrote],":


\n"; - if ($GBreadmore>0) { - $Message=strip_tags($Entries[$e][4]); - if (strlen($Message)>$GBreadmore) { - $readmorenumber="readmore".$Entries[$e][7]; - if ($_POST[$readmorenumber]) echo " ",nl2br($Entries[$e][4]),"
\n"; - else { - $Message = substr($Message, 0, $GBreadmore); - $Message = substr($Message, 0, strrpos($Message, ' '))."...
"; - echo " ",nl2br($Message),"
\n"; - } - } else echo " ",nl2br($Entries[$e][4]),"
\n"; - } else echo " ",nl2br($Entries[$e][4]),"
\n"; - if ($Entries[$e][6]) echo "
$Titles[Response]:
\n"; - if ($Entries[$e][6]) echo nl2br($Entries[$e][6]),"

\n"; - echo "

\n"; + SinlgeEntry($Entries[$e]); } echo "
\n"; if ($CurrentPage>0) { @@ -213,29 +259,7 @@ function EntriesView() { $_SESSION['currentpage']=$CurrentPage; } else { $Entries=array_reverse($Entries); - foreach($Entries as $e=>$Entry) { - echo "

",$Entry[7],". "; - if ($Entry[2]) echo ""; - echo "",$Entry[0],""; - if ($Entry[2]) echo ""; - if ($Entry[1]) echo " ",$Titles[From]," ",$Entry[1],""; - echo ", ",date("j.m.Y, H:i",$Entry[5]),", ",$Titles[Wrote],":


\n"; - if (($GBreadmore>0)&&(!$SearchResult)) { - $Message=strip_tags($Entries[$e][4]); - if (strlen($Message)>$GBreadmore) { - $readmorenumber="readmore".$Entries[$e][7]; - if ($_POST[$readmorenumber]) echo " ",nl2br($Entries[$e][4]),"
\n"; - else { - $Message = substr($Message, 0, $GBreadmore); - $Message = substr($Message, 0, strrpos($Message, ' '))."... "; - echo " ",nl2br($Message),"
\n"; - } - } else echo " ",nl2br($Entries[$e][4]),"
\n"; - } else echo " ",nl2br($Entries[$e][4]),"
\n"; - if ($Entry[6]) echo "
$Titles[Response]:
\n"; - if ($Entry[6]) echo nl2br($Entry[6]),"

\n"; - echo "

\n"; - } + foreach($Entries as $e=>$Entry) SinlgeEntry($Entry); } } @@ -266,6 +290,8 @@ if($_POST['submit']) { $SESSION["value"]["name"]=$_POST['name']; $SESSION["value"]["from"]=$_POST['from']; $SESSION["value"]["link"]=$_POST['link']; + $SESSION["value"]["subj"]=$_POST['subj']; + $SESSION["value"]["category"]=$_POST['category']; $SESSION["value"]["email"]=$_POST['email']; $SESSION["value"]["text"]=$_POST['text']; $Values=$SESSION["value"]; diff --git a/settings.php b/settings.php index 8bdb7e2..f5c7f47 100644 --- a/settings.php +++ b/settings.php @@ -19,6 +19,16 @@ $GBimagesize=1048576; // maximum image size $GBnotificationmailto=""; // leave empty if you don't want send notification $GBnotificationmailfrom=""; $GBtextlenght=7168; // maximum size of entry text +$GBcityfield=false; // enable or disable 'City' field +$GBlinkfield=false; // enable or disable 'Homepage' field +$GBsubjectfield=true; // enable or disable 'Subject' field +$GBcategoryfield=array( + 0=>"Public", // Array of categories, if you want to disable + 1=>"Help", // 'Category' field, just leave + 2=>"Special", // '$GBcategoryfield=false' string + 3=>"Suppot", + 4=>"Order", + 5=>"Other"); $Titles[HeadTitle]="Guestbook"; $Titles[Page]="Guestbook"; $Titles[Name]="Your name"; @@ -67,4 +77,7 @@ $Titles[NoResult]="No search result"; $Titles[ReadMore]="Read more"; $Titles[FileUpload]="Upload image:"; $Titles[WrongImage]="Can't upload image."; +$Titles[Subject]="Subject"; +$Titles[Category]="Category"; +$Titles[About]="about"; ?> diff --git a/settings_ru.php b/settings_ru.php index 8a45046..05bc032 100644 --- a/settings_ru.php +++ b/settings_ru.php @@ -20,6 +20,16 @@ $GBimagesize=1048576; // максимальный размер изображе $GBnotificationmailto=""; // оставьте поле пустым, если не хотите отправки уведомлений о новых записях $GBnotificationmailfrom=""; $GBtextlenght=7168; // максимальное количество символов для текста записи +$GBcityfield=false; // включение или отключение поля 'Город' +$GBlinkfield=false; // включение или отключение поля 'Домашняя страница' +$GBsubjectfield=true; // включение или отключение поля 'Тема' +$GBcategoryfield=array( + 0=>"Public", // Список категорий, если вы хотите удалить + 1=>"Help", // поле 'Категории', просто оставьте строку + 2=>"Special", // '$GBcategoryfield=false' + 3=>"Suppot", + 4=>"Order", + 5=>"Other"); $Titles[HeadTitle]="Гостевая книга"; $Titles[Page]="Гостевая книга"; $Titles[Name]="Ваше имя"; @@ -68,4 +78,7 @@ $Titles[NoResult]="Ничего не найдено"; $Titles[ReadMore]="Читать далее"; $Titles[FileUpload]="Загрузить изображение:"; $Titles[WrongImage]="Не могу загрузить изображение."; +$Titles[Subject]="Тема"; +$Titles[Category]="Категория"; +$Titles[About]="о"; ?>