On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru






 

Гостевая - это просто

Андрей Кухарчик

То, что знать мнения других о себе и о своем детище иногда полезно, никто не спорит. Когда сайт крепко становится на ноги и выходит из стадии младенчества, Web-мастер задается вопросом - как бы мне узнать, что именно хотят мои посетители, что волнует их и что не нравится на сайте? Все эти вопросы легко исследовать, установив гостевую книгу. Именно этим мы сейчас и займемся.

Для начала Вам нужен сайт, размещенный на хостинге, где поддерживается гипертекстовый препроцессор РНР. Это очень простой и несложный язык программирования, и именно на нем и будет написана наша гостевая книга. Все, что понадобится, это два файла. В первом будут размещены форма для ввода данных и сам скрипт гостевой, а во втором - храниться результаты введенных данных в специальном формате. 
Давайте обзовем их соответственно guest.phtml и guest.txt. Не забывайте, что после закачки на сервер этих двух файлов на файл с результатами (guest.txt) нужно будет установить атрибуты, разрешающие запись в файл. Сделать это можно практически в любом из FTP-менеджеров, проверив атрибуты уже закачанного на сервер файла и установив в настройках все галочки. Теперь перейдем непосредственно к коду. Напоминаю, он должен быть введен в файл guest.phtml.
Для начала делаем форму для ввода данных. Оформить Вы сможете ее сами по собственному вкусу, так что я сосредоточусь на сути.

<h2>Гостевая книга</h2>
<form action=guest.phtml method=post>
Введите email: <INPUT TYPE=TEXT NAME=email><BR>
Ваше имя: <INPUT TYPE=TEXT NAME=name><BR>
Сообщение: <br><textarea name="msg" rows=10 cols=40></textarea>
<br><input type=submit value="Отправить ">
<br><br>

Только что мы определили форму с тремя полями - адрес (переменная email), имя (переменная name) и сообщение (переменная msg). После того, как посетитель введет данные и нажмет на кнопку Отправить, все эти переменные будут доступны нашему скрипту, причем значение переменных будет соответствовать введенным данным. Теперь нужно все это обработать.

<?
$files = "guest.txt";
$qq=50;

Мы определились с именем файла, куда будем писать данные, и с максимальным количеством сообщений, которое может быть выведено на экран.

if ($email == "") { $email = "нет"; }
$msg=substr($msg,0,999);
$email=substr($email,0,39);
$name=substr($name,0,39);

Здесь введенные данные обработаны таким образом, чтобы переменная адреса не была пустой (то есть если туда ничего не ввели, она была равна строке "нет"). А каждая введенная переменная обрезается, чтобы ограничить количество вводимых символов. Это нужно для защиты от баловства, когда в книгу начинают вводить массу информации, которая никому не нужна.

if ($msg!= "" && $name!= "") {

Очень важный момент: если сообщение или имя не указаны вообще, скрипт ничего никуда не записывает, а просто продолжит обработку дальше, где выведет сообщения гостевой книги на экран. Но если и имя, и сообщение введены, скрипт, прежде чем вывести данные на экран, должен сделать запись отформатированных данных в файл для сообщений.

$time = Date("h:i:M:d");
$soo = "\n<b>$time $name (<a href=\"mailto: $email \">
$email </a>)</b><br> $msg<hr>";
$fp = fopen($files, "a+");
$fw = fwrite($fp, $soo);
fclose($fp); }

Вначале определяется и форматируется время, когда вводится сообщение. Потом формируется строка для записи в файл. Она представляет из себя последовательность нужных переменных, отформатированных тегами HTML. 
За счет этого нам дальше будет очень легко просматривать архив сообщений и выводить на экран нужный промежуток (если количество сообщений превысит сотню, вы это оцените - очень удобно поставить ссылку и смотреть сообщения с 50-го по 80-е, например). После того, как строка для записи подготовлена, она записывается в файл. Дальше - вывод результатов записи.
Обратите внимание, что в первый раз, когда посетитель попадает на страничку гостевой, идет обработка сразу этого кода, так как переменные имени и сообщения пусты.

$lines = file($files);
$a = count($lines);
$u = $a - $qq;
for($i = $a; $i >= $u;$i--) { echo $lines[$i]; }
?>

Тут все очень просто. В массив считывается файл сообщений, и в цикле выводится на экран его содержимое. 
Если количество сообщений превысило наше ограничение, они просто не показываются. Причем новые сообщения всегда вверху, около формы для ввода, так как вывод идет снизу вверх по индексу массива. Это очень удобно, но при желании может быть изменено.
Вот и все! В файл для сообщений ничего записывать не нужно - он будет заполняться по мере ввода данных. Архив сообщений всегда будет доступен, если Вы поставите ссылку <a href=guest.txt>архив</a>. Нужно заметить, что код не учитывает ввод посетителем тегов HTML. Но это уже несколько иная задача, и сделать это легко, если только нужно. Использоваться этот скрипт может в любом месте, где нужно узнать мнение посетителей, например, о статье, о новостях и т.д. Также это - простейший форум.



Литература по PHP