Правильный guest book html. Скрипт гостевой книги на PHP. Рис.1. Один из вариантов гостевой книги

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

В предыдущих статьях было рассмотрено создание формы обратной связи на сайте. Другой вариант двустороннего общения с посетителями - гостевая книга , в которой посетители оставляют сообщения непосредственно на странице сайта. Администратор сайта может отвечать на них, редактировать, удалять и т.п. Гостевая книга при своих несомненных преимуществах перед формой обратной связи имеет один большой недостаток - она добавляет забот администратору. Теперь все сообщения посетителей видны на сайте и на них надо иногда отвечать. Кроме того, наши гости пишут не только благодарственные отзывы, но и всякие непотребства, причем занимаются этим с особым усердием. Убил бы этих "писателей"! Следовательно, за гостевой книгой надо постоянно следить и заниматься воспитанием хулиганов-бездельников. Пример гостевой книги показан на рис.1:



Рис.1. Один из вариантов гостевой книги

Вариантов гостевых книг, платных и бесплатных, в интернете множество. Иногда гостевая книга входит в перечень услуг, предоставляемых хостингом. В этом случае вам достаточно разместить ссылку на гостевую книгу на странице своего сайта и, при желании, настроить её интерфейс через панель управления. Одна неприятность - при смене хостинга вы лишитесь гостевой книги. Так что лучше иметь свою, тем более, что установка её на сайт проста как дважды два.

Гостевые книги могут строиться с использованием баз данных или без них. В последнем случае информация сохраняется в обычном файле. Если вы сторонник простых решений, то рекомендую второй вариант, то есть обойтись без создания базы данных. Мне понравилась гостевая книга, разработанная Сергеем Шестопаловым (см. его сайт "Домашние скрипты"). На сайте также предлагаются интересные авторские разработки для интерактивного общения с посетителями: форумы, гостевые книги, различные формы для комментариев, отправки сообщений, сбора статистики и много других полезностей. Обязательно загляните, рекомендую!

Для примера, рассмотрим установку Гостевой книги версии 2.0. Она обеспечивает следующие функции:

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

Гостевая книга 2.0 при своей простоте вполне достаточна для большинства применений. Бесплатно скачать её можно с соответствующей страницы сайта Сергея Шестопалова. Размер папки с файлами после распаковки (имя - Book ) около 400 Кб.

Начинаем установку гостевой книги на ваш сайт:

1. Сначала необходимо проверить, что тарифный план вашего хостинга (контора, где размещён ваш сайт) поддерживает PHP. Если нет, то вам придётся скорее всего доплатить для перехода на другой тариф, поддерживающий РНР.

2. Закачиваем папку Book на свой сайт, обычно в корневой каталог, через панель управления или по FTP .

3. Ставим на нужной странице сайта гиперссылку на гостевую книгу - http://www.ваш_сайт /book/index.php.

4. Желательно также проверить права доступа к файлам и папкам вашего сайта. Удобнее всего это сделать через панель управления. Около каждой папки и файла стоят значки типа rwx, r-x или цифры 755, 644 и т.п. Они как раз и обозначают права доступа для администратора и гостей сайта:
r (или 4) - право на чтение данных из файла,
w (или 2) - право на изменение содержимого файла,
x (или 1) - право на исполнение файла.

Цифровое кодирование используется для сокращения записи. Например, 7 эквивалентна записи rwx (4+2+1) и т.д. Не вдаваясь в подробности этих сокращений, так как они обычно расшифрованы в руководстве к панели управления сайтом, проверьте, что для папок у вас стоит 755 (что соответствует rwx, r-x, r-x), а для файлов 644 (rw-, r--, r--). Обычно эти значения установлены по умолчанию и ничего менять вам не придется, но лучше все же проверить. Как говорится, "сосед мне друг, но сало лучше перепрятать".

Вот и всё! Заходите на свой сайт, открываете страницу, на которой вы поместили ссылку на гостевую книгу, переходите по этой ссылке и оставляете первое сообщение себе любимому.

Теперь несколько слов про обслуживание гостевой книги. Сеанс работы администратора с гостевой книгой начинается с авторизации - входа в панель управления по адресу http://www.ваш_сайт /book/admin/index.php. Логин и пароль для первого входа admin 111.

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



Рис.2.

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

Как я уже говорил, на страницах гостевой книги любят оставлять свои сообщения разные нежелательные "друзья". Обычно они размещают здесь ссылки на свои сайты, прикрываясь восторженными отзывами о вашем сайте. В 99% случаев - это спам. Поэтому рекомендую исключить ввод адреса сайта в сообщениях. Для этого войдите в панель управления гостевой книгой и на закладке Внешний Вид - Форма снимите галку у пункта "Сайт", чтобы спамеры не использовали гостевую книгу для размещения ссылок на свои сайты. Электронную почту и ICQ лучше оставить, так как иногда люди хотят получить конфиденциальный ответ, то есть без размещения в гостевой книге. По окончании не забудьте нажать кнопку "Сохранить" внизу страницы.

Удаление пункта "Сайт" не всегда помогает против засорения гостевой книги и лучше всего проверять сообщения перед их размещением. Кстати, если сообщений поступает немного, то можно упростить гостевую книгу до обычной HTML-странички. Об этом простейшем варианте рассказано в

» DRBGuestbook

Гостевая книга DRBGuestbook – это бесплатный, простой PHP скрипт, который не требует БД MySql. Не смотря на это, вы можете управлять программой, удалять сообщения, одобрять сообщения, банить пользователей по IP адресу, через защищенную паролем панель администратора. Скрипт так же включает себя анти-спам проверку, такую как image verification, блокировку URL и модерирование всех сообщение в книге. Можно установить функцию, что каждый раз, когда кто-то оставляет сообщение, вы будете получать уведомление на e-mail.

Преимущества скрипта.
  • Быстрая и лёгкая установка.
  • Не требует БД MySQL. Все сообщения хранятся в файле.
  • Можно удалить множество сообщений за один раз.
  • Содержит анти-спам проверку.
  • Можно забанить IP адрес, чтобы не смогли оставлять сообщения.
  • Поддерживает модерацию сообщений, так, что только одобренные сообщения будут публиковаться.
  • Получайте уведомление на почту, каждый раз, когда кто-то подписал вашу гостевую книгу.
  • Проверка сообщение: список «запрещенных» (матерных) слов к публикации.
  • Функция анти-флуд. Чтобы пользователи не публиковали сообщения так часто.
  • Скрипт предотвращает публикацию HTML кодов или ссылок (URL) в теле сообщения, в качестве анти-спам предосторожности.
  • Настройка минимум и максимум букв в одном сообщении.
  • Скрипт можно легко настроить: сообщения об ошибке, предупреждения, дата и время.
  • Дата и часовой пояс легко настраивается.
  • Генерируемые страницы содержат синтаксис XHTML и прекрасно работают в браузерах IE и Firefox.
  • Вход в панель администратора через веб – интерфейс.
Системные требования
  • PHP версия 4.4 или выше
  • GD library
  • Apache HTTP Server с файлом.htaccess с функцией Override Allowed (рекомендовано)
  • Linux, Windows, Unix, Mac OSX, Sun Solaris, IIS

For HTML codes, guestbook programming might seem unchallenging at first, and rightly so. When you see a guestbook, basic information is requested and it appears that anyone with a fundamental knowledge of the HTML programming language can write guestbook HTML codes. However, guestbooks, from the best to the worst, require a bit more skill than you think.

What is a Guestbook?

A guestbook is an online way to let visitors to your site comment or request information. Most guestbooks post what is written to the webpage so that everyone can read guest comments. The most common items you see on a guestbook are:

  • Name or Username
  • Where they reside (though you can set the HTML code to hide this fact)
  • Email (again, you can hide this fact and have it sent only to your email for communication purposes
  • Comments
  • Some guestbooks forego a comments section for a quick survey. You can usually find questions like "What did you think of this site: good, decent, bad, awesome" or "Was the information provided: enough, not enough, just right"
  • Options to request a reply or other information
Related Articles

Guestbooks can be programmed to send this information to an email address of your choice so that you don"t have to continually log into the site to view guestbook entries.

Where to Find HTML Codes, Guestbook

Whether you know HTML programming, you are a beginning web designer or you simply want a guestbook on your site, using prewritten HTML codes can save you time. The codes you can find online are typically well-tested and provide the most basic programming needed for easy-to-use guestbooks.

  • The code at HTML Comment Box provides the basic outline of an HTML code guestbook. All you need to do is customize the text to your needs and for your domain name. Instructions are provided at the beginning of the page. The code includes lines for name and address.
  • For a large selection of HTML codes and scripts, visit . With such a varied and large selection, you should be able to find one that works into the website you are creating. You can choose from basic guestbooks to more advanced programming that includes drop down menus and code for Macs and Linux machines. The codes are only 30-day free trials, so if you find a set of codes you like you"ll have to pay for the full use.
  • At Freebok you can input some basic information about what text you want on your guestbook and the website will generate the code for you. Afterwards, you can customize the guestbook even more by creating a template and editing the code in Freebok"s template layout mode. Other instructions are available on the site to help you with certain links you may need. You do need to sign up for an account in order to use Freebok.
  • To quickly add a guestbook with just a comment box, go to Guestbook Code . The initial code is already generated, but there are five options you can check and uncheck in order to alter the code slightly:
    • Collapse Guest Book. This includes a link that can open and close the guestbook on the webpage you insert it on.
    • Put Guest Book At Top. If this is unchecked, the guestbook and comment box will appear below any entries in the list.
    • Show Submission Date of Entries. This will add a date and time. The time will be the user"s local time zone, not yours.
    • Profanity Filter. Deletes any profanities that people may write.
    • You can also change the number of comments that are posted to the page for others to read. Minimum is one and maximum is one hundred. It"s recommended that you set it between five to twenty-five.

Недавно получил письмо на email с просьбой помочь разобраться со скриптом гостевой книги или книги отзывов. Поэтому выполняю свое обещание и сегодняшняя статья будет именно на эту тему.

Что такое гостевая книга и зачем она вообще нужна на сайте?

Гостевая книга — это своего рода книга жалоб или пожеланий, где любой посетитель Вашего сайта может оставить свое сообщение, которое (в случае одобрения админом) смогут прочитать все желающие. Т.е. это самые обычные комментарии, только не к отдельной заметки, а к целому сайту!

Гостевая книга добавляет интерактивность на Ваш сайт и является распространенным способом обратной связи.

Итак, для начала создадим табличку в базе данных mysql , где будут храниться все комментарии пользователей:

CREATE TABLE IF NOT EXISTS `guestbook` (`id` int(11) NOT NULL auto_increment, `user_ip` int(10) unsigned NOT NULL, `user_email` varchar(50) NOT NULL, `addtime` int(11) NOT NULL, `name` varchar(15) NOT NULL, `text` text NOT NULL, `admin_text` text NOT NULL, `image` varchar(40) NOT NULL, `sex` tinyint(1) NOT NULL default "1", PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

  • id — порядковый номер сообщения
  • user_ip — IP-адрес пользователя, представленный в виде целого цисла
  • user_email — email-адрес пользователя
  • addtime — время добавления сообщения
  • name - имя пользователя
  • text — текст сообщения
  • admin_text — текст ответа администратора на сообщение
  • image — аватар пользователя
  • sex — пол пользователя (мужской/женский)

Как Вы видите в табличке есть поле для IP-адреса пользователя. Это делается для того, чтобы можно было потом сделать черный список, куда можно заносить IP-адреса «не хороших» пользователей, которые в дальнейшем не смогут оставлять сообщения.

Поле sex нужно для того, чтобы выводить «правильный» аватар, в случае, когда пользователей не загрузит свой.

С базой данных разобрались. Переходим к программированию. Так как мы работаем с базой данных, то первым делом создадим самый простой класс для работы с базой данных. Для этого создадим файл DB.class.php и поместим туда следующий код:

Class DB { private static $instance; private $MySQLi; private function __construct(array $dbOptions){ $this->MySQLi = @ new mysqli($dbOptions["db_host"],$dbOptions["db_user"], $dbOptions["db_pass"],$dbOptions["db_name"]); if (mysqli_connect_errno()) { throw new Exception("Ошибка базы данных."); } $this->MySQLi->set_charset("utf8"); } public static function init(array $dbOptions){ if(self::$instance instanceof self){ return false; } self::$instance = new self($dbOptions); } public static function getMySQLiObject(){ return self::$instance->MySQLi; } public static function query($q){ return self::$instance->MySQLi->query($q); } public static function esc($str){ return self::$instance->MySQLi->real_escape_string(htmlspecialchars($str)); } }

Стоит сказать, что конструктор этого класса объявлен как private, таким образом, объект не может быть создан вне пределов класса, и инициализация возможна только из статического метода init(). Он берет массив с параметрами соединения с MySQL и создает экземпляр класса, который содержится в статической переменной self::$instance. Таким образом, обеспечивается существование единственного соединения с базой данных в конкретный момент времени.

Остальная часть класса, выполняет запросы к базе данных, на основе статического метода query().

При желании Вы можете доработать этот класс, так как Вам это нужно!

Также в разработке гостевой книги нам понадобятся вспомогательные функции, которые я вынесу в отдельный файл и назову его helper.php.

Теперь мы плавно подошли к самому главному файлу в нашем скрипте — index.php. Именно здесь и будет выполняться вся логика скрипта.

Итак, первым делом необходимо инициализировать сессию, задать основные настройки и выполнить подключение к базе данных mysql. В сессии будет храниться защитный код (капча) формы.

Session_start(); /* Конфигурация базы данных. Добавьте свои данные */ $dbOptions = array("db_host" => "localhost", "db_user" => "", "db_pass" => "", "db_name" => ""); //Подключаем класс для работы с базой данных require "DB.class.php" //Подключаем вспомогательные функции require "helper.php" // Соединение с базой данных DB::init($dbOptions); $appath = realpath(dirname(__FILE__))."/"; //Папка на сервере, куда будут загружаться аватарки $uploaddir = "images/avatars"; //Максимальное число сообщений на одной странице $per_page = 10; //Число страниц в пейджинге $num_page = 2;

Для построения навигации по страницам в гостевой книге, необходимо узнать общее число сообщений. Это можно сделать так:

//Получаем общее число сообщений $result = DB::query("SELECT COUNT(*) AS numrows FROM guestbook"); $total = $result->fetch_object()->numrows;

Теперь определим номер страницы, которую необходимо показать. Для этого обработаем переменную $_GET["p"]

$start_row = (!empty($_GET["p"]))? intval($_GET["p"]): 0; if($start_row < 0) $start_row = 0; if($start_row > $total) $start_row = $total;

$result = DB::query("SELECT * FROM guestbook ORDER BY addtime DESC LIMIT ".$start_row.",".$per_page); //Здесь будет храниться список сообщений $items = array(); while($row = $result->fetch_assoc()){ $row["addtime"] = format_date($row["addtime"],"date")."|".format_date($row["addtime"],"time"); $items = $row; }

Здесь я использовал функцию format_date() для работы с датой и временем, которую я создал в файле helper.php. Основная её задача — это вывод даты и времени в русском формате. Вот ее код:

Function format_date($date,$format = "date"){ if(empty($date)) return ""; $months = array("1" => "января", "2" => "февраля", "3" => "марта", "4" => "апреля", "5" => "мая", "6" => "июня", "7" => "июля", "8" => "августа", "9" => "сентября", "10" => "октября", "11" => "ноября", "12" => "декабря"); if($format == "time"){ return date("H:i",$date); } elseif($format == "date"){ $m = date("n", $date); $m = $months[$m]; $d = date("j",$date); $y = date("Y",$date); return $d." ".$m." ".$y; } else{ return date("d.M.Y H:i",$date); } }

Данная функция имеет всего 2 параметра:

  • $date — дата в формате UNIX (количество секунд пройденных с ночи 1-ого января 1970 - ого года)
  • $format — форма вывода даты.

Теперь мы можешь вывести список сообщений на странице. Для этого я использую следующий html-код:

Гостевая книга Отзывы оставить отзыв