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

» » @lexGuestbook

@lex Guestbook – это бесплатный PHP guestbook скрипт для сайтов. Написанный на языке PHP, @lex Guestbook легко устанавливается за считанные минуты, даже новичкам будет легко разобраться.

PHP guestbook полностью бесплатный скрипт – основное условие: не убирать копирайт в низу страницы. PHP guestbook устанавливается на ваш сервер и полностью независим от каких-либо других сайтов. Резервное копирование сообщение в PHP guestbook по вашему желанию, хоть каждый день. Автоматическая установка Alex Guestbook : название таблиц в БД прописываются сами.

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

Полный перевод.
Французский, Английский, Польский, Немецкий, Норвежский, Итальянский, Голландский язык, Словацкий, Персидский, Турецкий.

Частичный перевод. Некоторые слова по-прежнему на английском.
Испанский, Русский, Шведский, Чешский, Хорватский, Португальский, Исландский, Сербский, Датский.

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

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

1. На бесплатном хостинге есть только то, что дают.
2. Лучше, но совсем не обязательно. Порядочный гость оставит сообщение так как нужно (через мою форму), а хороший хакер все равно обойдет ваши $_GET, $_POST, $_COOKIE и $HTTP_REFERER тоже.
3. Контроль длины производиться, но только неявно, самой БД (единственно, что только само сообщение может быть огромно - до 64Кб).
4. Да, есть, HtmlSpecialChars была использована, не использовал AddSlashes (и это большая ошибка, признаю свою вину, см. ниже). При в ключеной magic_quotes_gpc, данная проблема не столь остра, но дыра в безопасности остается (в панели управления).
5. Да, согласен, можно было бы и вырезать, но имя #$@%#$^%$ ничем не хуже чем AF4ETX09T43 . В e-mail и url есть дырка, можно использовать скрипты.
6. Интересно, что не неинициализировано?

Есть еще ряд интересных приемов, как например защита от автоматического ввода через картинку (как на этом сайте) http://www.сайт/webmast/php/Security-Images-in-PHP/
...

Картинок кажется небыло, зачем усложнять демонстрационный пример. Пока ни разу не встречал гостевой с подобной защитой. Что касается этого сайта, то это не гостевая.

Анатомия межсайтового скриптинга XSS
http://www.woweb.ru/index.htm/id/1073393942

Очень интересно, спасибо.

З.Ы. Если бы Аффтор потрудился бы почитать (и вниктуть) в статьи что на этом же сайте, то понял бы, на сколько его труд непрофессионален. Стоит учитывать опыт предыдущих Авторов и, по крайней мере, уважать их труды - они же для вас писали.

Где есть не уважение? Извините если кого обидел.

Что касается защиты, то советую еще раз прочесть первый абзац статьи, я не ставил цели расматривать надежную гостевую, а лишь показать как можно написать протейшую гостевую, для тех кто только начинает познавать CGI, ведь не все сразу приходит, надо начинать с простого, и ты тоже не сразу стал таким умным, тоже совершал ошибки, так что давай оставим аспекты защиты другим статьям, другим авторам.

Да, с точки зрения защиты этот скрипт непрофессионален, и я непрофесионал в области защиты, поэтому в первом абзаце и стоит соответвующая оговорка, которую, к сожалению не все прочли.

PS Цитата:
Закон "Об авторском праве и смежных правах"
Статья 6. Объект авторского права. Общие положения
1. Авторское право распространяется на произведения науки, литературы и искусства, являющиеся результатом творческой деятельности, независимо от назначения и достоинства произведения, а также от способа его выражения.
Остальное можешь прочесть тут: http://www.febras.ru/~patent/copyright/2_3part2.html
В том числе и Статья 9. п.1
И не тебе решать пользоваться мне моим правом или нет.

» » GBook

Этот PHP скрипт поможет вам реализовать функцию гостевой книги на вашем сайте. Без использования какой-либо Базы Данных MySQL, она не нужна, чтобы скрипт работал. Скрипт Gbook включает в себя множество мощных SPAM фильтров. А также защиту почты от СПАМеров.

В скрипте есть 2 txt файла – header.txt и footer.txt. При помощи этих файлов, вы сможете дополнить рекламными блоками или счётчиками свою гостевую книгу. Полностью изменить шаблон под стиль вашего сайта, тоже не вызовет особого труда. Программа Gbook может быть переведена на любой язык мира. Просто измените слова в одном файле language.

Преимущества скрипта.
  • Поддержка смайликов.
  • Не требует БД MySQL. Все сообщения хранятся в файле.
  • Оповещение админа по почте, о новом сообщении в Гостевой Книге.
  • Содержит 2 шага анти-спам проверки.
  • Можно забанить IP адрес, чтобы не смогли оставлять сообщения.
  • Получайте уведомление на почту, каждый раз, когда кто-то подписал вашу гостевую книгу.
  • Проверка сообщение: список «запрещенных» (не цензурных) слов к публикации. Прикрывается ****
  • Функция анти-флуд. Чтобы пользователи не публиковали сообщения так часто.
  • Личные сообщения.

Недавно получил письмо на 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-код:

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

Начало