PHP скриптове. Как да управлявате съобщения от книгата за гости Phoca Книга за гости Невъзстановима книга за гости htm

Написани са голям брой статии по темата за създаване на книги за гости, но повечето от тях разкриват процеса на писане не напълно, а частично. В допълнение, написаните книги бяха възможно най-прости и не можеха да правят нищо друго освен да добавят съобщения. В тази статия ще се опитам да опиша подробно процеса на създаване на книга за гости с добър набор от функции. Книгата за гости е написана на PHP с помощта на текстови файловеза съхранение на данни.

Така че, първо, трябва да се справим с файловете. Ще имаме четири от тях, въпреки че можем да ги комбинираме в едно, но зависи от вас да решите...

Файл № 1 - guestbook.inc.dat

Нека го създадем, оставим го празен и му дадем разрешения (0777-*nix, rwx/rwx/rwx)

Всички съобщения ще се записват тук... Да, да!!! Точно в един файл! Но не се тревожете. Аз лично го проверих на добре познатия WallSt сървър. база данни с размери 5, 10, 100, 250, 500, 1000 KB! Имаше забавяне само на книга от 1000 KB, повярвайте ми, това са повече от 3000 средни записа! Ще имате повече от достатъчно.

Файл № 2 – config.inc

Файл № 3 – gb.php

Книга за гости

*Име:
Електронна поща:
*Съобщение:

$c-1)прекъсване; списък ($name,$email,$date,$time,$guesttext)=split(":::","$data[$i]", 5); /* Съзнателно не направих супер_мега_сложни дизайни, просто ще се огранича до обикновен текстов изход! Който има нужда лесно ще разбере какво трябва да се направи! За тези, които не разбират, сапунът ще бъде по-нисък, така че прочетете... */ echo " $име@[$date, $time]
$guesttext

"; ) $col=$c/$gb_on_page; echo "
"; ако ($c<$gb_on_page){ echo ""; } else { echo "Страници:"; /* Тук има такова нещо, че ако можете да отидете на предишната страница, тогава се показва нещо подобно :)<< 2 */ if($c>$gb_on_page & $page>0)( ехо "<<"; } /* Ниже функция, которая отвечает за вывод нумерации страниц с сообщениями… */ for($i=0;$i<$col;$i++) { if(($i)!=$page)echo "[".($i+1)."] "; else echo "".($i+1).""." "; ) ) /* Има такова нещо, че ако можете да отидете на следващата страница, тогава се показва нещо подобно :) 1 >>*/ if($c>$gb_on_page & $page<$col-1){ echo ">>"; ) ехо "
Общо съобщения: $c"; echo "
"; ?>

Файл № 4 - gbadd.php

", ">", $guesttext); $name = ereg_replace("<", "<", $name); $name = ereg_replace(">", ">", $name); $email = ereg_replace("<", "<", $email); $email = ereg_replace(">", ">", $email); // без кавички! 2=DeaD= thanX! $name = ereg_replace(""", """, $name); $email = ereg_replace(""", """ , $email); $guesttext = ereg_replace(""", """, $guesttext); // премахване на допълнителни интервали // в центъра $guesttext=ereg_replace(" +"," ",$guesttext); $name = ereg_replace(" +"," ",$name); $email=ereg_replace(" +"," ",$email); //дясно и наляво $name=trim($name); $email=trim($ имейл ); $guesttext=trim($guesttext); // нов ред $guesttext = ereg_replace("n", "
", $guesttext); // така че целият текст да е на един ред! $guesttext = ereg_replace("r", "", $guesttext); // megaquotes $name = stripslashes($name); $email = stripslashes ($ имейл); $guesttext= stripslashes($guesttext); // правилни тирета $guesttext = preg_replace ("/(1,)-(1,)/", " - ", $guesttext); $guesttext = preg_replace ( "/ ^- /", "- ", $guesttext); // номер-номер $guesttext = preg_replace ("/(d)-(d)/", "\1–\2", $guesttext); / / думи с тире $guesttext = preg_replace ("/(S+)-(S+)/", " \1-\2", $guesttext); // частици и предлози $guesttext = preg_replace ("/([А-Яа-яA-Za-z]) (li|l|zhe|f|by|b)([^A-Zaa -яA-Za-z])/", "\1 \2\3", $guesttext); $guesttext = preg_replace ("/(s)([А-Яа-я](1))s/", "\1\2 ", $guesttext); // А. С. Пушкин $guesttext = preg_replace ("/([A-ZA-Z])([. ](1))(0,1)([A-ZA- Z])([. ](1))(0,1)([A-Za-Z][A-Za-zA-Za-z]*)/", "\1. \3. \5" , $guesttext); // Пушкин А. С. $guesttext = preg_replace ("/([A-Za-Z][A-Za-z]*) ([A-Za-Z])[ . ](1)(0 ,1)([A-ZA-Z]).([,)](1))/", "\1 \2. \3.\4", $guesttext); // конвертиране на адреси във връзки! $guesttext = eregi_replace("([_a-z0-9-]+(.[_a-z0-9-]+)*@+( .+)*(.(2,3)))", "\0", $guesttext); $guesttext = eregi_replace("((ht|f)tp://www.|www.)(+(. +)*(.(2,3))((/|?)*)*)", "http://www.\3", $guesttext); $guesttext = eregi_replace("((ht|f) tp://)(((+(.+)*(.(2,3)))|(((1,3).)(3)((1,3))))((/|? )*)*)", "\0", $guesttext); // изрязване на твърде голямо парче информация $name=substr($name,0,$name_max_size); $email=substr($email,0, $email_max_size); $guesttext=substr($guesttext,0,$message_max_size); // BBкодове $guesttext = ereg_replace("[b]", " ", $guesttext); $guesttext = ereg_replace("", "", $guesttext); $guesttext = ereg_replace("[i]", " ", $guesttext); $guesttext = ereg_replace("", "", $guesttext); $guesttext = ereg_replace("[u]", " ", $guesttext); $guesttext = ereg_replace("", "", $guesttext); $guesttext = ereg_replace("", " ", $guesttext); $guesttext = ereg_replace("", "", $guesttext); $guesttext = ereg_replace("", " ", $guesttext); $guesttext = ereg_replace("", "", $guesttext); $guesttext = ereg_replace("", " ", $guesttext); $guesttext = ereg_replace("", "", $guesttext); $guesttext = ereg_replace("", " ", $guesttext); $guesttext = ereg_replace("", "", $guesttext); // изпрати съобщение до моя имейл // съобщение $message .="".$date.", ".$time." n"; $message .="Име: ".$name.", имейл: ".$email."nMessagen"; $message .=".$guesttext."n "; $message .="- ---------rn"; $message .="Съобщение от книгата за гости"; // заглавия $headers .="От: $site_name<$recipient>n"; $headers .="X-Mailer: Книга за гости на Pseonn"; $headers .="X-Приоритет: 1n"; $headers .="Content-Type: text/plain; charset=windows-1251n"; // изпрати всичко по дяволите! mail($recipient, $subject, $message, $headers); $msg="$name:::$email:::$date:::$time : ::$guesttext "; $lines = file("guestbook.inc.dat"); $fp = fopen("guestbook.inc.dat", "w"); fwrite($fp, "$msgn"); за ($i = 0; $i< count($lines); $i++) { @fwrite($fp, "$lines[$i]"); } fclose($fp); clearstatcache(); } // если не удалось, отсылаем его обратно! else { header("Location: gb.php"); } ?>

Е, сега банановата :) За лека закуска искам да ви предложа набор от BB-кодове, които ще помогнат на посетителите ви да разнообразят донякъде съобщенията в книгите ви за гости :)

» » @lexКнига за гости

@lexКнига за гости- безплатно е PHP книга за гостискрипт за уеб сайтове. Написано на PHP език, @lexКнига за гостиЛесен за инсталиране за минути, дори и начинаещите ще го разберат лесно.

PHP книга за гостиНапълно безплатен скрипт - основното условие: не премахвайте авторските права в долната част на страницата. PHP книга за гостие инсталиран на вашия сървър и е напълно независим от други сайтове. Архивирайте съобщение в PHP книгата за гости по ваше желание, дори всеки ден. Автоматична инсталация Алекс Книга за гости: имената на таблиците в базата данни се изписват сами.

Предимства на скрипта.

  • Благодарение на кожите можете да промените външния вид @lexКнига за гостиза да отговарят на дизайна на вашия уебсайт. (всички кожи са валидни XHTML 1.0 Transitional)
  • IN PHP книга за гостиВградени са около 20 езика.
  • Всяка държава има свой собствен флаг.
  • Поддръжка на емотикони: възможност за добавяне на ваши собствени емотикони, изтриване, редактиране.
  • Показват се статистики за символи: можете да зададете максималния брой букви в едно съобщение.
  • Вътрешна търсачка.
  • Възможност за оценка от посетители. Оценка по 10-точкова система.

Поддържани езици

Пълен превод.
Френски, английски, полски, немски, норвежки, италиански, холандски, словашки, персийски, турски.

Частичен превод. Някои думи все още са на английски.
Испански, руски, шведски, чешки, хърватски, португалски, исландски, сръбски, датски.

Днес ще опиша може би най-добрата задача за начинаещи в езика за програмиране PHP - Книга за гости. По мое мнение тази задача е най-простата, но в същото време ви позволява да научите всички основни характеристики на работата с PHP и базата данни MySQL. В допълнение, тази задача може да се разширява безкрайно, което ви позволява да усъвършенствате нови технологии.

Описанието и решението на този проблем ще бъдат написани точно тук, без тестване за функционалност, така че може би има правописна грешка някъде. Това беше направено не поради моя мързел, а отново заради допълнително обучение при създаване на книга за гости от ваша страна. Освен това представеното решение ще бъде малко „криво“, но повече за това в края на тази статия в раздела „Самостоятелна работа“.

Ако изобщо не знаете как да работите с PHP, първо ви съветвам да прочетете статията PHP - откъде да започнете.

Ще анализираме създаването на най-примитивната книга за гости, без дизайн и администрация. С други думи, ще се ограничим до влизане в книгата, регистрация и оставяне на съобщения.
От самата задача става ясно, че можем напълно да се ограничим до три PHP файла, за да реализираме тази задача. Разбира се, задачата за регистрация може да бъде разделена на две: формуляр за регистрация и добавяне на данни към базата данни, но ние няма да правим това. Подобни разсъждения важат и за процедурата за оставяне на коментари. Така създаваме три файла: index.php, registration.php, book.php.

По имената на файловете можете веднага да разберете за какво ще отговарят: index.php - страница за вход, registration.php - страница за регистрация, book.php - страница на книга за гости.

Най-простото нещо в нашия случай е страницата за вход. Тъй като страницата отговаря за въвеждането на двойка потребителско име и парола, тя трябва да съдържа формуляр за изпращане на тези данни към страницата book.php. А също и връзка към страницата за регистрация. Ние имаме:

Влезте в книгата за гости

Влизам:
Парола:

Регистрация

Отдалечавайки се малко от темата, за тези, които не знаят какво означава кодът по-горе. Тук имаме чист HTML. Ключът е етикетът формакойто приема два параметъра действие, който отговаря за адреса на страницата, която ще се отвори след потвърждаване на въвеждането на данни, и параметъра метод, който отговаря как данните от формуляра ще бъдат изпратени до посочената страница (вижте POST и GET с прости думи). Вътре в тага на формуляра са посочени полета за въвеждане (въвеждане, избор), които трябва да имат атрибута име. Чрез стойността на този атрибут ще бъде възможно да се получат данните, въведени от потребителя на страницата, посочена в параметъра на формата за действие. Във формуляра трябва да има вход с типа Изпращане, което по същество е бутон, щракването върху който изпраща данни към страницата за действие.

Да продължим... Сега трябва да създадем нова страница за регистрация на потребител. Струва си веднага да помислим какво точно искаме да имаме. Реших, че за обикновена книга за гости ще е достатъчно да има потребители с уникални входове, както и да знам адреса на техния уеб сайт (ако има такъв). След като сме решили какво искаме да знаем за потребителя, тогава можем да започнем да проектираме нашата база данни.

Отидете на phpMyAdmin. Нека създадем там база данни с името gb. В тази база данни ще създадем таблица Users със следните полета:

Вход varchar(50) уникален //потребителско влизане, уникално поле парола varchar(150) //парола www varchar(255) //адрес на уебсайт

И тъй като вече сме влезли в редактора на базата данни, можем веднага да помислим как ще съхраняваме съобщенията. В нашия случай е доста подходящо да знаем кой е оставил съобщението и кога, както и действителния текст на нашето съобщение. Също така, за удобство си струва да номерираме нашите съобщения. Решихме това, което означава, че можем безопасно да създадем друга таблица Съобщения със следната структура:

Id int ai(auto_increment) primary_key //номер на съобщението, брояч, който сам ще увеличи mes text //текст на съобщението who varchar(50) //вход на лицето, което е оставило съобщението, когато timestamp default(current) //време на напускане съобщението според текущата дата и час по подразбиране

Подредихме базата данни. Сега нека да преминем към файла registration.php. Обобщавайки горното, имаме:

Регистрация

Влизам:
Парола:
Отново паролата:
WWW: http://


Към основния

Малко за кода. Както вече забелязахте, PHP присъства тук. Няма да описвам повече формуляра, но както виждаме, тук данните за формуляра се изпращат на същата страница, където се намира този формуляр. С други думи, файлът registration.php изпраща данни към себе си. Никой не забранява това, но не винаги можете да го използвате, тъй като значително разваля четливостта на кода. Но от друга страна, това ясно демонстрира възможностите на езика PHP. По същество нашата страница е разделена на два случая. Първият случай е, когато данните се изпращат към страницата чрез POST заявка, вторият случай е, когато към страницата не се изпраща POST заявка. Във втория случай ще покажем формата за регистрация, а в първия случай ще започнем да проверяваме подадените данни. Както можете да видите, данните се изпращат под формата на асоциативен масив (т.е. масив, чиито индекси са низове). Освен това индексите съвпадат с имената на полетата за въвеждане, посочени във формуляра за подаване на данни. Тези. ако пишем

тогава, когато изпращаме тези данни с POST заявка, ще имаме променлива

$_POST["vasa-peta"]

Също така си струва да се отбележи, че не извършваме повторни проверки за влизане. Тази проверка ще се извърши на ниво база данни, тъй като полето за вход е маркирано като уникално.

Сега последното нещо. Остава само да се направи самата книга за гости. Малко обсъждане. Тъй като книгата за гости работи с потребителско име и парола, първото нещо, което трябва да направим, е да проверим въведените потребителско име и парола за наличност в базата данни. Тъй като решихме да добавим съобщения във файла book.php, тогава очевидно трябва да следва процедурата за добавяне на съобщение. Е, в самия край, показване на всички съобщения. (ако добавите съобщение след показването им, добавеното съобщение ще се покаже само след презареждане на страницата). Ние имаме:

Книга за гости "; ) else ( echo "Вашето съобщение не е добавено!


"; } } ?>
"име="вход" /> "име="парола" />

"; echo "Текст: ".$row["mes"]."
"; ) ) mysql_close($link); ?>

Това по същество е всичко. Ако кодът работи на 100%, добре. Ако не, тогава ви съветвам да опитате сами да коригирате грешките. Сега обещаният раздел.

Самостоятелна работа
Както споменахме в началото, това решение е „криво“. Ако все още не разбирате защо, тогава ще обясня сега. Както може би сте забелязали във файла book.php във формата за добавяне на коментар има няколко скрити полета, като две от тях са потребителското име и паролата, въведени от потребителя. Не е добре, нали? Опитайте се да коригирате този дефект с помощта на сесии (Как да работите със сесии в PHP).
Опитайте се да отговорите на въпроса как се различават функциите празен/исетИ излез/умри?
Променете заявката за избор на съобщения от базата данни, така че при показване на съобщения да се показва уебсайтът на автора на съобщението.
Ако сте забелязали, потребителската парола в базата данни се съхранява в чист текст и това не е много добре. Редактирайте кода, така че хеш на паролата на потребителя (например MD5 или SHA1) да се съхранява в базата данни.

Създаване на книга за гости на сайта

В предишни статии разгледахме създаването на формуляр за обратна връзка на уебсайт. Друг вариант за двупосочна комуникация с посетителите е Книга за гости, при който посетителите оставят съобщения директно на страницата на сайта. Администраторът на сайта може да отговаря на тях, да редактира, изтрива и т.н. Книга за гостиВъпреки несъмнените си предимства пред формата за обратна връзка, тя има един голям недостатък - създава притеснения на администратора. Сега всички съобщения от посетители се виждат на сайта и понякога трябва да им отговорите. Освен това нашите гости пишат не само благодарствени отзиви, но и всякакви неприлични неща и правят това с особено усърдие. Бих ги убил тези "писатели"! Затова трябва постоянно да се следи книгата за гости и да се прави възпитание на хулигани и безделници. Пример за книга за гости е показан на фиг. 1:



Фиг. 1.Една от опциите за книга за гости

В интернет има много опции за книги за гости, платени и безплатни. Понякога книгата за гости е включена в списъка с услуги, предоставяни от хостинга. В този случай просто трябва да поставите връзка към книгата за гости на страница от вашия уебсайт и, ако желаете, да конфигурирате нейния интерфейс чрез контролния панел. Един проблем е, че когато смените хостинга, ще загубите книгата си за гости. Така че е по-добре да имате свой собствен, особено след като инсталирането му на сайта е лесно като две.

Книгите за гости могат да бъдат изградени с помощта на бази данни или без тях. В последния случай информацията се съхранява в обикновен файл. Ако сте привърженик на прости решения, тогава препоръчвам втория вариант, тоест без създаване на база данни. Хареса ми книгата за гости, разработена от Сергей Шестопалов (вижте неговия уебсайт „Домашни скриптове“). Сайтът предлага и интересни авторски разработки за интерактивна комуникация с посетителите: форуми, книги за гости, различни форми за коментари, изпращане на съобщения, събиране на статистика и много други полезни неща. Не пропускайте да го разгледате, препоръчвам го!

Например, помислете за инсталацията Книга за гостиверсия 2.0. Той осигурява следните функции:

  • управление на съобщения: изтриване, редактиране, коментиране,
  • настройка и цялата работа се извършва чрез контролния панел, тоест не се нуждаете от познания по програмиране и други тънкости,
  • съобщенията поддържат емотикони, форматиране на текст и цвят,
  • преглед на съобщението,
  • има антиспам, антихакерска система, блокиране на потребители по IP, търсене на нападател по IP,
  • Защитата и сигурността на рекламата са организирани чрез captcha (въвеждане на изкривени числа). Можете също така да създадете „черен списък“ с нежелани посетители и списък със забранени думи,
  • напълно адаптивен интерфейс и много други.

Книга за гости 2.0Въпреки своята простота, той е напълно достатъчен за повечето приложения. Можете да го изтеглите безплатно от съответната страница на сайта на Сергей Шестопалов. Размер на папката с файлове след разопаковане (име - Книга) около 400 KB.

Нека започнем да инсталираме книга за гости на вашия уебсайт:

1. Първо, трябва да проверите дали вашият хостинг план (офисът, където се хоства уебсайтът ви) поддържа PHP. Ако не, тогава най-вероятно ще трябва да платите допълнително, за да преминете към друга тарифа, която поддържа PHP.

2. Качване на папката Книгакъм вашия уебсайт, обикновено в главната директория, през контролния панел или през FTP .

3. Поставяме хипервръзка към книгата за гости на желаната страница от сайта - http://www.your_site /book/index.php.

4. Също така е препоръчително да проверите правата за достъп до файлове и папки на вашия сайт. Най-удобният начин да направите това е чрез контролния панел. До всяка папка и файл има икони като rwx, r-x или числа 755, 644 и т.н. Те просто показват правата за достъп на администратора на сайта и гостите:
r(или 4) - право на четене на данни от файла,
w(или 2) - право на промяна на съдържанието на файла,
х(или 1) - правото за изпълнение на файла.

За съкращаване на записа се използва цифрово кодиране. Например 7 е еквивалентно на писане на rwx (4+2+1) и т.н. Без да навлизате в подробности за тези съкращения, тъй като те обикновено се обясняват в ръководството на контролния панел на сайта, проверете дали вашите папки са зададени на 755 (което съответства на rwx, r-x, r-x) и вашите файлове са 644 (rw-, r- -, r--). Обикновено тези стойности са зададени по подразбиране и няма да се налага да променяте нищо, но е най-добре да проверите. Както се казва, „съседът ми е приятел, но е по-добре да скрием сланината“.

Това е всичко! Отидете на вашия уебсайт, отворете страницата, на която сте поставили връзка към книгата за гости, последвайте тази връзка и оставете първото съобщение на любимия човек.

Сега няколко думи за поддържането на книгата за гости. Сесията на администратора с книгата за гости започва с авторизация - влизане в контролния панел на http://www.your_site /book/admin/index.php. Логин и парола за първи вход admin 111.

След това можете да промените паролата си (препоръчително е да направите това) и да започнете да редактирате публикации и да им отговаряте. Интерфейсът на административния панел е изключително приятелски настроен и можете лесно да разберете всички функции. Всички инструменти са ясни и допълнително снабдени със съвети. Например, фиг. 2 показва панела за персонализиране на външния вид на главната страница на книгата за гости и разкрива списъка с налични панели:



Фиг.2.

Разбира се, по абсолютно същия начин, както е описано, можете да инсталирате по-пълна версия Книга за гости 3.2Сергей Шестопалов, който има някои допълнителни функции: модул за статистика, възможност за проверка на съобщения от администратора преди публикуване на сайта (модериране) и някои други.

Както вече казах, на страниците книга за гостиРазлични нежелани „приятели“ обичат да оставят своите съобщения. Те обикновено публикуват връзки към своите сайтове тук, криейки се зад възторжени отзиви за вашия сайт. В 99% от случаите това е спам. Затова ви препоръчвам да изключите въвеждането на адреса на уебсайта в съобщенията. За да направите това, влезте в контролния панел на книгата за гости и в раздела Външен вид - ФормаПремахнете отметката от елемента „Сайт“, за да попречите на спамерите да използват книгата за гости, за да публикуват връзки към своите сайтове. По-добре е да оставите имейл и ICQ, тъй като понякога хората искат да получат поверителен отговор, тоест без да публикуват в книгата за гости. Когато приключите, не забравяйте да щракнете върху бутона "Запазване" в долната част на страницата.

Премахването на елемента „Сайт“ не винаги помага срещу запушване на книгата за гости и е най-добре да проверявате съобщенията, преди да ги публикувате. Между другото, ако получите малко съобщения, можете да опростите книгата за гости до обикновена HTML страница. Тази най-проста опция е описана в

– компонент книга за гости за Joomla! Прост и лесен за управление компонент на книгата за гости с Captcha, в настройките на компонента можете да дефинирате забранени думи, които няма да се показват, можете също да се защитите от автоматичното публикуване на нежелани съобщения, като допълнително активирате модерирането на съобщенията.

  • За да управлявате компонента и съобщенията, е необходимо да влезете през административния панел на сайта с вашето потребителско име и парола.

  • На контролния панел намерете раздела „Компоненти“, задръжте курсора на мишката върху него и изберете компонента, който ви интересува от падащия списък; в този случай се интересуваме от компонента на книгата за гости „Phoca Guestbook“ и тъй като материалът е за това как да управлявате съобщенията, щракнете върху раздела „съобщения“ "

  • В новия прозорец „Съобщения“, който се отваря, ще видите всички съобщения в книгата за гости. Непубликуваните съобщения са маркирани с червен кръг.
    Можеш:
  1. публикувайте непубликувано съобщение, като щракнете върху червения кръг;
  2. публикувате непубликувано съобщение, като поставите отметка в квадратчето до съобщението и щракнете върху бутона „Публикуване“ в горната част;
  3. първо прочетете непубликуваното съобщение, редактирайте го, ако е необходимо;
  4. създайте сами ново съобщение.

  • За да прочетете съобщението в книгата за гости, щракнете върху темата на съобщението. Ще се отвори страницата за редактиране на съобщение „Съобщение: [редактиране]“. Ако съобщението не е спам, тогава можете да изберете „Публикувано“ в колоната вдясно „Настройки за публикуване“ и да кликнете върху бутона „Запазване“ или „Запазване и затваряне“.

  • За да създадете ново съобщение в книгата за гости, щракнете върху бутона „Създаване“ (оранжев кръст). Ще се отвори формулярът за създаване на съобщение „Съобщение: [редактиране]“.
  • Попълнете полетата: Тема и Потребителско име. След това не забравяйте да изберете името на книгата за гости в полето „Книга за гости“, въведете текста на съобщението, в колоната вдясно „Настройки за публикуване“, изберете „Публикувано“ и щракнете върху „Запазване“ или „ Запази и затвори”. След това съобщението ще се появи на уебсайта.

Публикации по темата