Почти на каждом более-менее популярном сайте есть форум или гостевая книга, эти элементы нужны для постоянного общения автора сайта с его пользователями.
Но многие начинающие веб-мастера не знают, как реализовать гостевую книгу или форум самостоятельно. Некоторые веб-мастера прибегают к использованию специальных интернет-сервисов, которые предоставляют уже готовый продукт в виде гостевых или форумов, расположенных на сайте этих сервисов и показывающих всем пользователям, которые заходят в вашу гостевую\форум свою рекламу. Это не лучший вариант, поэтому попробуем написать свою собственную гостевую книгу на php.
Для начала разберем порядок работы любой гостевой книги или форума:
Генерация формы для отправки сообщения пользователем и вывод уже существующих сообщений из гостевой книги. Ввод пользователем своих данных и текста сообщения. Отправка формы на обработку любому скрипту, который работает на стороне сервера (php, asp, cgi, perl, …) Обработка скриптом введенных данных, проверка этих данных на валидность (правильность). Запись обработанных данных в файл или БД, расположенных на том же сервере, что и скрипт. Вывод сообщения о результатах добавления сообщения. Теперь разберем каждый этап по отдельности. Генерация формы Форма для отправки сообщения пользователя скрипту-обработчику обычно хранится в шаблоне, который в свою очередь расположен в базе данных или в файле. В качестве простого примера можно использовать следующую форму с тремя полями (имя пользователя, e-mail, текст сообщения):
Вывод уже введенных сообщений Для вывода сообщения нам понадобиться для начала написать php скрипт, который будет отвечать за вывод сообщений, а так же предопределить будущую структуру файла, в котором будут храниться сообщения пользователей. Начнем с конца, и напишем структуру файла с сообщениями, назовем его к примеру messages.dat. Каждое сообщение расположено на отдельной строке, а элементы сообщения разбиты с помощью условного разделителя : имя пользователя ne-mail пользователя nсообщение nдата n ... имя пользователя 2e-mail пользователя 2сообщение 2дата 2 имя пользователя 1e-mail пользователя 1сообщение 1дата 1
Теперь осталось написать простой php скрипт, который будет выводить все записи из файла с сообщениями. В данном php скрипте будет реализован шаблонизированный вывод, т.е. в базовый шаблон сообщения будут подставляться значения переменных: $filename = "messages.dat"; $delitmer = ""; $shablon = '
'; $data = @file($filename); foreach($data as $val) { list($username, $email, $message, $date) = explode($delitmer, trim($val)); $tmp_message = str_replace("%username%", $username, $shablon); $tmp_message = str_replace("%email%", $email, $tmp_message); $tmp_message = str_replace("%message%", $message, $tmp_message); $tmp_message = str_replace("%add_date%", $date, $tmp_message); echo $tmp_message; } ?> Обработка php-скриптом введенных данных и запись их в файл messages.dat Обработка данных php скриптом заключается в проверке введенных данных (длинны, правильности). Мы будем проверять только длину полученных значений переменных: для имени пользователя – 50 символов для e-mail – 80 символов для сообщения – 500 символов с учетом пробелов
Для повышения безопасности создадим отдельный php-скрипт gbook_add.php, который будет брать все значения из глобальной переменной $_POST и при этом заменять все опасные HTML и JavaScript теги на их эквиваленты, но безопасные. Вот код этого php скрипта: $filename = "messages.dat"; $delitmer = ""; $username_limit = 50; $email_limit = 80; $message_limit = 500; if (isset($_POST)) { if (isset($_POST['username']) & isset($_POST['email']) & isset($_POST['message'])) { if (((strlen($_POST['username'])>0) & (strlen($_POST['username'])<=$username_limit)) & ((strlen($_POST['email'])>0) & (strlen($_POST['email'])<=$email_limit)) & ((strlen($_POST['message'])>0) & (strlen($_POST['message'])<=$message_limit))) { $username = str_replace("\r\n", " ", htmlspecialchars($_POST['username'])); $email = str_replace("\r\n", " ", htmlspecialchars($_POST['email'])); $message = str_replace("\r\n", " ", htmlspecialchars($_POST['message'])); $arr = array($username, $email, $message, date("d.m.Y")); $new_message = implode($delitmer, $arr) . "\r\n"; $messages_arr = @file($filename); $messages_str = $new_message; $messages_str .= trim(implode("", $messages_arr)); $fp = fopen($filename, "w+"); fwrite($fp, $messages_str); fclose($fp); echo ""; echo "Ваше сообщение добавленно!"; } else { echo "Ошибка!!! Не все данные введенны, либо в одном из полей формы слишком символов."; } } } ?>
Это простейший вариант гостевой книги, написанной на php, который только показывает, по какому именно принципу работает гостевая книга или форум. В данной гостевой книге не реализованы такие важные возможности как защита гостевой от спам-ботов, удаление и редактирование сообщений, разбиение сообщений гостевой книги на страницы... Скачать данную гостевую книгу вы можете по ссылке: |