Главная » Windows 7  » Пишем скрипт гостевой книги. Гостевая книга Joomla — Phoca Guestbook Мысль guest book html

Пишем скрипт гостевой книги. Гостевая книга Joomla — Phoca Guestbook Мысль guest book html

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

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

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

Создадим его, оставим пустым, и укажем ему права (0777-*nix, rwx/rwx/rwx)

Сюда будут записываться все сообщения… Да-да!!! Именно в один файл! Но не пугайтесь. Мной лично проверялось на всеми известном сервере WallSt. база данных размером в 5, 10, 100, 250, 500, 1000 Кб! Торможения были только на 1000 Кб книге, поверьте, это более 3000 средних записей! Вам хватит ее с лихвой.

Файл №2 – config.inc

Файл №3 – gb.php

Guestbook

*Имя:
E-mail:
*Сообщение:

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

"; } $col=$c/$gb_on_page; echo "
"; if ($c<$gb_on_page){ echo ""; } else { echo "Страницы: "; /* Здесь такая штука, что если можно перейти на предыдущую страницу, то показывается примерно что то вроде этого:) << 2 */ if($c>$gb_on_page & $page>0){ echo "<<"; } /* Ниже функция, которая отвечает за вывод нумерации страниц с сообщениями… */ 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 ">>"; } 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); //cправа и слева $name=trim($name); $email=trim($email); $guesttext=trim($guesttext); // перевод строки $guesttext = ereg_replace("n", "
", $guesttext); // чтобы весь текст был на одной строке! $guesttext = ereg_replace("r", "", $guesttext); // мегакавычки $name = stripslashes($name); $email = stripslashes($email); $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]) (ли|ль|же|ж|бы|б)([^А-Яа-яA-Za-z])/", "\1 \2\3", $guesttext); $guesttext = preg_replace ("/(s)([А-Яа-я]{1})s/", "\1\2 ", $guesttext); // A.C. Пушкин $guesttext = preg_replace ("/([А-ЯA-Z])([. ]{1}){0,1}([А-ЯA-Z])([. ]{1}){0,1}([А-ЯA-Z][А-Яа-яA-Za-z]*)/", "\1. \3. \5", $guesttext); // Пушкин А. С. $guesttext = preg_replace ("/([А-ЯA-Z][А-Яа-яA-Za-z]*) ([А-ЯA-Z])[. ]{1}{0,1}([А-ЯA-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); // BBcodes $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.", e-mail: ".$email."nСообщениеn"; $message .="".$guesttext."n "; $message .="----------rn"; $message .="Сообщение из гостевой книги"; // заголовки $headers .="From: $site_name <$recipient>n"; $headers .="X-Mailer: Pseon’s Guestbookn"; $headers .="X-Priority: 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"); for ($i = 0; $i < count($lines); $i++) { @fwrite($fp, "$lines[$i]"); } fclose($fp); clearstatcache(); } // если не удалось, отсылаем его обратно! else { header("Location: gb.php"); } ?>

Ну а теперь банановый 🙂 На закуску хочу предложить вам набор BB-codes, которые помогут вашим посетителям несколько разнообразить сообщения в гостевых книгах 🙂

– компонент гостевой книги для Joomla! Простой и лёгкий в управлении компонент гостевой книги с Captcha, в настройках компонента вы можете определить запрещенные слова, которые не будут отображаться, защититься от автоматической публикации не желательных сообщений можно также включив дополнительно модерацию сообщений.

  • Для управления компонентом и сообщениями Вам требуется через административную панель сайта войти со своим логином и паролем.

  • На панели управления находите вкладку «Компоненты», наводите на неё курсор и из выпадающего списка выбираете интересующий Вас компонент, в данном случае нас интересует компонент гостевой книги «Phoca Guestbook» и так как материал о том, как управлять сообщениями, нажимаем на закладку «сообщения».

  • В новом открывшемся окне «Сообщения», Вы увидите все сообщения гостевой книги. Неопубликованные сообщения помечены красным кружком.
    Вы можете:
  1. опубликовать неопубликованное сообщение, нажав на красный кружок;
  2. опубликовать неопубликованное сообщение, поставив галочку напротив сообщения и вверху нажать на кнопку «Опубликовать»;
  3. сначала прочитать неопубликованное сообщение, при необходимости отредактировать его;
  4. создать сами новое сообщение.

  • Для того чтобы прочитать сообщение гостевой книги, нажмите на тему сообщения. Откроется страница редактирования сообщения «Сообщение: [редактировать]». Если сообщение не спам, то Вы можете в колонке справа «Настройки публикации», выбрать «Опубликовано» и нажать на кнопку «Сохранить» или «Сохранить и закрыть».

  • Для того чтобы создать новое сообщение гостевой книги, нажмите на кнопку «Создать» (оранжевый крестик). Откроется форма создания сообщения «Сообщение: [редактировать]».
  • Заполняете поля: Тема и Имя пользователя. Затем обязательно выберете название гостевой книги в поле «Гостевая книга», вписываете текст сообщения, в колонке справа «Настройки публикации», выбрать «Опубликовано» и нажать на кнопку «Сохранить» или «Сохранить и закрыть». После этого сообщение появится на сайте.

» мы рассмотрели основные возможности и особенности компонента книги отзывов и приступили к обзору его настроек. В этой статье мы закончим рассмотрение опций расширения и поговорим о защите от спама.

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

Просмотр

Настройки на данной вкладке (рисунок ниже) относятся к записям (сообщениям) гостевой книги, которые оставили пользователи, и ответам на эти записи (комментарии), которые оставил администратор сайта.

Цифры в списке ниже соответствуют цифрам на рисунке выше. Включая\отключая соответствующие опции, Вы показываете\скрываете те или иные элементы записей и комментариев.

  1. Отображать Имя в сообщении.
  2. Отображать Email в сообщении.
  3. Отображать Website в сообщении.
  4. Отображать Имя в ответах.
  5. Отображать Тему в комментарии.
  6. Отображать Email в ответах.
  7. Отображать Website в ответах.
  8. Отображать дату в ответах.
  9. Выпадающий список.

Рассмотрим оставшиеся опции.

  • Отображать Сообщения. Если данная опция отключена (выбрано Нет ), то в книге отзывов Joomla не будут отображаться никакие записи, а только форма. По сути, книга станет просто формой обратной связи.
  • Показать комментарии. Вы можете полностью скрыть комментарии к записям. Они обведены голубой рамкой на рисунке выше.
  • Разбивка на страницы. Активирует разделение записей книги на страницы, если их много.
  • Нумерация страниц по умолчанию. Указывает на то, сколько записей должно отображаться на одной странице.
  • Постраничное разбиение (Сообщения). Можно задать значения, которые будут появляться в выпадающем списке (на рисунке выше №9). По сути, это настройка пагинации (постраничной навигации).
  • Включить Cache. Если Вы активировали использование кэша в общих настройках Joomla, включив эту опцию, добавите в кэш сайта страницы с записями книги отзывов. Это может снизить нагрузку на сервер и увеличить скорость загрузки страниц у пользователей. Рекомендую использовать данную опцию. Стоит отметить, что кэширование может привести к тому, что записи в гостевой книге будут появляться не сразу после их публикации (зависит от кэша).

Безопасность

Это одна из первых пяти вкладок (рисунок ниже) настроек Phoca Guestbook, посвящённая безопасности (защиты от спама). Она, в основном, направлена на выявление запрещённого содержимого в отзывах гостевой книги Joomla средствами самого компонента и по Вашим правилам.

Опции, которые оснащены всплывающими подсказками на русском языке, рассматриваться не будут.

Для некоторых опций доступны такие параметры:

  • Сохранить. Если сообщение содержит что-то запрещённое, оно будет сохранено в базе данных сайта.
  • Опубликовать. Если сообщение содержит что-то запрещённое, оно будет опубликовано на сайте.
  • Премодерация. Если сообщение содержит что-то запрещённое, то оно будет сохранено в базе данных сайта, но не будет опубликовано до его проверки модератором, который примет соответствующее решение.
  • Отклонить. Если сообщение содержит что-то запрещённое, оно не будет сохраняться в базе данных сайта.

Обратите внимание, что возможно «наложение» срабатывания тех или иных опций безопасней в рамках всех настроек компонента. Например, статус публикации может зависеть от опции Премодерация на вкладке Основные .

Опция Включить очистку HTML позволяет автоматически удалять из записей книги отзывов для Joomla 3 все запрещённые\небезопасные HTML-теги.

Проверка содержания

Опции данной вкладки позволяют настроить интеграцию Phoca Guestbook Joomla и антиспам-сервисов Akismet, Mollom . Сервисы анализируют сообщения, которые оставляют пользователи в книге отзывов. Если эти сообщения похожи на спам, будет предпринято одно из действий, которое Вы зададите в опции Блокировать СПАМ (Проверка содержания) . Действия аналогичны одноимённым параметрам, описанным выше в подразделе Безопасность . Если выбрано Нет (Запрещено) , то проверка на спам при помощи этих сервисов производиться не будет.


Можно отключить один из сервисов. Вам нужно зарегистрироваться на сайтах антиспам-сервисов и получить соответствующие ключи, которые нужно ввести в соответствующие поля на этой вкладке (рисунок выше).

Также стоит отметить, что на 20.09.2015 для бесплатных аккаунтов сервисов есть лимиты:

  • Akismet – до 50000 проверок в месяц. Примерно, по 1666 проверок в сутки.
  • Mollom – до 50 проверок в сутки. Примерно, 1500 проверок в месяц.

На своём сайте я уже более 2-х лет использую Akismet для защиты комментариев . Пока не наблюдал особых проблем.

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

Проверка IP Адреса

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

  1. Honeypot.

Можно задать различные действия в случаях, когда анти-спам сервисы что-то обнаружат (опция Запрещённые IP ). Действия аналогичны одноимённым параметрам, описанным выше в статье.

Также есть возможность задать список запрещённых IP-адресов вручную – опция Блокировка IP .

В Phoca Guestbook на вкладке (рисунок ниже) есть множество опций для добавления капчи к форме отправки записей в книгу отзывов. На основании собственного опыта, могу сказать, что капча – это очень неудобный элемент для посетителей Вашего сайта. Рекомендую использовать её только при острой необходимости. Когда ничего больше не помогает или нет средств на реализацию более удобной для посетителей защиты Вашего сайта от спама.

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

  • На почтовые ящики приходит множество сообщений. Не всегда удобно искать те или иные цепочки писем.
  • Вероятность попадания сообщения в папку «Спам». Были случаи, когда пользователи не находили письма по данной причине.
  • На личные сообщения и комментарии к статьям я реагирую гораздо быстрее по техническо-организационным причинам.
  • Были случаи, когда пользователи удаляли цепочки писем с нужной им информацией.

Вы можете добавить одну или несколько из следующих капчей: reCAPTCHA, EasyCalc, Math Captcha, TTF Captcha, Mollom Captcha, hnCaptcha, капча Joomla по умолчанию. Для некоторых из них есть настройки (рисунок выше). Отмечу, что добавление нескольких капчей – крайняя мера. Особенно для сайтов с низкой посещаемостью и активностью пользователей.

Для использования, например, reCAPTCHA нужны ключи. Их бесплатно можно получить на сайте капчи .

Сперва рассмотрим те методы (настройки), которые не влияют или минимально влияют на удобство пользования Вашей книгой отзывов Joomla. Но, на мой взгляд, они обеспечивают меньшую автоматизацию и общий уровень защиты от спама. Подразумевается, что ниже приведённые рекомендации применяются в случаях, когда записи могут оставлять любые пользователи (в том числе незарегистрированные).

  1. Включите ведение логов добавления записей (ведение журнала). Это можно сделать в Phoca Guestbook – Настройки – Logging , активируйте обе опции (Включить Logging, Сохранение лога журнала ). Если появятся проблемы с базой данных, то отключите Сохранение лога журнала . Если не поможет, то отключите и Включить Logging .
  2. Включите предварительную модерацию. Это можно сделать в опция Премодерация .
  3. Включите уведомления администраторов на почту о новых записях. Это можно сделать в Phoca Guestbook – Настройки – Основные опция Отправить Email .
  4. Включите проверку пользователя. Это можно сделать в Phoca Guestbook – Настройки – Основные опция Отключить проверку пользователя .
  5. Проверка содержания .
  6. Настройте интеграцию с одним или несколькими анти-спам сервисами в настройках компонента на вкладке Проверка IP -адреса .
  7. Укажите уникальный суффикс сессии. Это можно сделать в опция Суффикс сессии .
  8. Включите очистку HTML. Это можно сделать в Phoca Guestbook – Настройки – Безопасность опция Включить очистку HTML .
  9. Включите скрытое поле. Это можно сделать в опция Отобразить скрытые поля .
  10. Постоянно анализируйте журнал событий и вносите соответствующие коррективы в защиту сайта.
  11. Постоянно отслеживайте все письма о новых записях, модерируйте их, а на основании модерации вносите соответствующие коррективы в защиту сайта, например, добавляйте в фильтр IP-адреса, слова и так далее.
  12. Задайте список запрещённых слов. Это можно сделать в Phoca Guestbook – Настройки – Безопасность опции Запрещённые слова, Запрет целые слова . Учитывая особенности языка (падежи, склонения, разнообразие нецензурной лексики и т.д.), а также несовершенство данного фильтра (поиск чётких совпадений), на мой взгляд, это не такие уж эффективные опции.
  13. Задайте ограничения на максимальное количество символов сообщения. По умолчанию – 2000. Это можно сделать в Phoca Guestbook – Настройки – Безопасность опция Количество символов .
  14. Ограничьте количество ссылок, отображаемых в сообщении. Это можно сделать в Phoca Guestbook – Настройки – Безопасность опция Maximum Url . Установите «-1» (без кавычек), если не хотите показывать ссылки вообще.
  15. Задайте список слов, идентифицирующих ссылки в записях книги отзывов для Joomla 3. Это можно сделать в Phoca Guestbook – Настройки – Безопасность опция Слова-индификаторы для запрета ссылок .

Обратите внимание, что добавление большого количества значений в такие поля как: Запрещённые слова, Запрет целые слова, Слова-индификаторы для запрета ссылок и так далее, могут увеличить размер таблицы Phoca Guestbook базы данных, замедлить её работу в целом и замедлить процесс отправки записи в книгу. Например, я пробовал добавлять список из нескольких тысяч слов (ненормативная лексика) и добавление комментария длилось очень долго. Это было не с Phoca Guestbook, но, думаю, что и для этого компонента данная проблема тоже может проявиться.

Способы, указанные ниже, хуже в плане удобства пользования , чем вышеописанные, но более эффективные и работают автоматически . Их стоит применять в сочетании с вышеизложенным списком, как дополнение.

  1. Разрешите добавление записей в книгу отзывов только зарегистрированным пользователям. По умолчанию, Phoca Guestbook настроен именно так. Лучше, чтобы при регистрации был капч.
  2. Отключите редактор Javascript. Это можно сделать в Phoca Guestbook – Настройки – Форма опция Включить редактор Javascript .
  3. Добавьте капч (или несколько) к самой форме добавления записи в книгу отзывов. Это можно сделать в Phoca Guestbook – Настройки – Captcha опция Включить Captcha . Включите капч для всех пользователей.
  4. Включите отсчёт времени и блокировку. Это можно сделать в Phoca Guestbook – Настройки – Captcha опции Включить отсчёт времени и Время блокировки .

Обратите внимание, что можно использовать любое сочетание вышеописанных способов.

Также настоятельно рекомендую позаботиться об общей защите Вашего сайта. Если Вам интересна данная тематика, то ознакомьтесь с циклом статей о защите сайта Джумла. Вот первая (из 12) часть. Также подумайте над чем-то наподобие RSFirewall .

Для отображения на сайте (во фронтальной части) отзывов и формы их добавления служит пункт меню Гостевая книга (рисунок ниже). Его можно создать в менеджере меню Joomla, как и любой другой пункт меню.


Все «уникальные» для этого компонента опции, доступные при настройке пункта меню, разделены на пять вкладок. Большинство опций аналогичны тем, что были рассмотрены в этой и предыдущей статье для самого компонента. Рассмотрим самые интересные, на мой взгляд, параметры. Также не будем затрагивать настройки, одинаковые для всех типов пунктов меню Джумла.

  1. Пункт меню.
  2. Параметры. Эти опции были рассмотрены в предыдущей статье .
  3. Форма.
  4. Просмотр. Эти опции были рассмотрены в этой статье выше.

На вкладке Пункт меню (рисунок выше) в спадающем списке Выбор гостевой книги можно указать книгу, которую нужно отображать по нажатию на этот пункт меню. Создание книг рассмотрено в предыдущей статье «Обзор Phoca Guestbook. Гостевая книга Joomla ».

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

Подробнее о различных шаблонах Джумла и работе с ними можете прочесть в этом разделе .


Обратите внимание, что глобальные (общие) настройки Phoca Guestbook Joomla менее приоритетны в случаях, когда для конкретного пункта меню заданы свои собственные (если они отличаются).

Как видите, компонент весьма функционален и гибок в плане настроек. Думаю, что в сочетании с широким выбором опций по защите от спама этот бесплатный компонент книги отзывов для Joomla 3 будет полезен всем, кто ищет подобное расширение.

Привет читателям сайт )

В данной статье мы рассмотрим Phoca Guestbook - компонент гостевой книги для Joomla-сайтов .

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

Возможности Phoca Guestbook:

  • выбор прав доступа для пользователей;
  • фильтрация не желаемых слов и фраз;
  • блокировка IP-адресов;
  • ограничение количества печатаемых символов;
  • капча;
  • модернизация сообщений (проверка модератором);
  • внешний вид отзывов (цвет, отображение имя, отображение e-mailи адреса сайта).

Итак рассмотрим компонент.

После установки, Phoca Guestbook не нуждается в глобальных настройках.

Панель управления:

  • Posts - все сообщения оставленные пользователями;
  • Guestbooks - категории (созданные гостевые книги);
  • Info - Информация и обновление компонента.

Как видно, на рисунке справа есть кнопка "Параметры". Если нажать на нее, то можно более обширно настроить гостевую книгу и сам компонент.

Параметр

Значение

Display Subject In Form

(Да | Да (обязательно) | Нет) показать или скрыть поле Объект в форме, устанавливается, если поле Тема будет требоваться

Display Name In Form

(Да | Да (обязательно) | Нет) показать или скрыть имя поля в форме, устанавливается, если поле Name будет необходимо

Display Email In Form

(Да | Да (обязательно) | Нет) показать или скрыть поле e-mail в форму, установите поле e-mail, если потребуется

Display Website In Form

(Да | Да (обязательно) | Нет) показать или скрыть поле Сайт в форме, установите поле, если сайт будет требоваться

Display Content In Form

(Да | Да (обязательно) | Нет) показать или скрыть содержимое поля в форме

Enable Javascript Editor

(Да | Нет) Включить или выключить JavaScript Editor

Display Path In Javascript Editor

(Да | Нет) показать или скрыть информацию о пути в редактор JavaScript

(Скрыть | Дисплей) Установите, если форма должна отображаться или нет.

(Top | Нижний) Выберите Текущее местоположение

Display Required Sign

(Да | Нет) Установите для отображения полей, которые требуются

(Да | Нет) Установите, для отображения сообщений.

ширина (в пикселях)

высота (в пикселях)

Установить ширину таблицы (таблица, в которой отображается форма, в пикселях)

Параметр

Значение

Если не зарегистрированный пользователь оставляет сообщение, то можно дать ему имя по умолчанию. Например: Гость

Username Or Name

(Имя пользователя | Имя) выберите имя которое должно быть отображено в Гостевой книге (Имя пользователя или реальное имя пользователя)

Disable User Check

(Нет | Да) Проверка пользователя (отключение этого параметра не рекомендуется)

Registered Users Only

(Да | Нет) Если Да, то только зарегистрированные пользователи могут добавлять новые сообщения

(Да | Нет) Если да, то сообщение будет отображаться после одобрения администратора

Отправить письмо

Параметр

Значение

Display Name In Post

(Да | Нет) показать или скрыть имя (имя пользователя) (гостевой книге)

Display Email In Post

(Да | Нет) показать или скрыть электронную почту (гостевой книге)

Display Website In Post

(Да | Нет) показать или скрыть сайт в (гостевой книге)

Установить формат даты

Установить цвет шрифта

Second Font Color

Установить второй цвет шрифта (цвет шрифта даты)

Background Color

Установить цвет фона

Установка цвета границы

Pagination Default Value

Установите значение по умолчанию для нумерации страниц

Установить нумерацию страниц. Отделяются друг от друга запятой (,)

Pagination Hide All

(Да | Нет) все значения будут скрыты (нумерация страниц)

Параметр

Значение

Forbidden Word Filter

Установить запрещенные слова, которые не будут отображаться в интерфейсе. Слова отделяются друг от друга запятой (,)

Forbidden Whole Word Filter

Установить все запрещенные слова, которые не будут отображаться в интерфейсе. Слова отделяются друг от друга запятой (,)

Save post with forbidden words

(Да | Нет) Если да, то посты, которые включают в себя запрещенные слова, будут сохранены в гостевой книге (запрещенные слова будут скрыты, если сохранены)

Добавить IP которые вы хотите заблокировать. Отделите каждый IP запятой (,)

Maximum Characters

Установить максимальное число символов, они могут быть сохранены в базе данных

Установить максимальное количество URL, которые могут быть отображены в сообщении (0: нет, ссылки будут отображаться в сообщениях, -1: все URL-адреса будут отображаться в сообщениях, например 3: только три ссылки из всех URL будут отображаться в сообщениях)

Not Allowed URL Identification Words

Набор слов, который будет определять допускать ли URL-адреса в сообщении. Отделите каждое слово запятая (,). Пример:: / /,. HTM,. ASP,. JSP,. PHP, WWW.,. COM,. ORG,.

Включение или отключение защиты Captcha

Измените этот параметр только в том случае, вы не будете видеть капчу.

Enable Captcha - Users

(Все | Не зарегистрированы) Параметр отображения капчи для груп пользователей (показывать ли капчу зарегистрированным)

Standard Captcha Characters

Числа, строчные буквы, символы верхнего регистра, которые будут отображаться в стандартном изображении Captcha

Math Captcha Characters

Числа, строчные буквы, символы верхнего регистра, которые будут отображаться в Math изображения Captcha

TTF Символы

Числа, строчные буквы, символы верхнего регистра, которые будут отображаться в TTF изображения Captcha

TTF Captcha Characters

Для отображения ре-капчи, введите публичный код

reCAPTCHA Public Key

Установить рекапчи Public Key

Enable Akismet Spam Protection

(Нет | Да) Посылает все данные новой записи geustbook в Akismet - веб-сервис для проверки спама

Block Spam (Akismet)

(Нет | Да) Блокировать посты, которые не прошли проверку в Akismet

Установить Akismet API ключ, который необходимо использовать в Akismet-Spam. Получите ваш на https://akismet.com/signup/ бесплатно

Основной URL вашего сайта.(URL должен включать префикс http://)

Enable HTML Purifier

(Нет | Да) Включить или выключить HTML Purifier

Установить суффикс сессии (Это функция безопасности, чтобы изменить имя сессии, установите уникальный суффикс, например: a100b20c3)

Enable Hidden Field

(Нет | Да) Включить или выключить скрытые поля. Некоторые спам-ботов пытаются заполнить все поля на месте, если они заполняют это скрытое поле, которое человек не видит, запись не будет добавлена в гостевой книге.

(Да | Нет) Включить кэш.

Enable Detecting Incoming Page

(Да | Нет) Включить или выключить обнаружение входящих страниц. Это функция безопасности. Если вы включите её,то страницу, с которой пришел пост к гостевой книге, будет сохраняться и отображаться в интерфейсе.

Сегодня я опишу, пожалуй, лучшую задачу для новичков языка программирования PHP — Гостевая книга. На мой взгляд эта задача является наипростейшей, но при этом позволяет узнать все основные особенности работы с PHP и базой данных MySQL. Помимо этого, данная задача до бесконечности расширяема, что позволяет оттачивать новые технологии.

Описание и решение данной задачи будет написано сразу здесь, без проверок на работоспособность, поэтому, возможно, где-то есть опечатка. Сделано это не из-за моей лени, а опять таки из за дополнительной тренировки, при создании гостевой книги Вами. Так же представленное решение будет немного «кривовато», но об этом уже в конце данной статьи в разделе «Самостоятельная работа».

Если Вы совсем не знаете как работать с PHP, то для начала советую прочитать заметку PHP — с чего начать .

Мы будем разбирать создание самой примитивной гостевой книги, без дизайна и администрирования. Другими словами мы ограничимся входом в книгу, регистрацией ну и оставлением сообщений.
Из самой задачи становится понятно, что мы можем вполне ограничится тремя файлами php, для реализации данной задачи. Конечно задачку регистрации можно разбить на две: форма регистрации и добавления данных в базу, однако делать мы этого не будем. Аналогичные рассуждения допустимы и для процедуры оставления комментариев. Таким образом создаем три файла: index.php, registration.php, book.php.

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

Самое простое в нашем случае это страница входа. Так как страница отвечает за ввод пары логина и пароля — на ней должна присутствовать форма для отправки этих данных на страницу book.php. А так же ссылка на страницу с регистрацией. Имеем:

Вход в гостевую книгу

Логин:
Пароль:

Регистрация

Немного отойдя от темы, для тех кто не вкусе что означает код выше. Здесь мы имеем голый HTML. Ключевым моментом является тег form который принимает два параметра action , который отвечает за адрес страницы, который откроется после подтверждения ввода данных, и параметр method , который отвечает каким способом данные формы будут отправляться на указанную страницу (см. POST и GET простыми словами). Внутри тега form указываются поля для ввода (input, select), которые обязательно должны иметь атрибут name . Именно по значению данного атрибута можно будет получить введенные пользователем данные на странице указанной в параметре формы action. Обязательно внутри формы должен находится input с типом submit , который по своей сути является кнопкой, по нажатию на которую и произойдет отправка данных на страницу action.

Продолжим… Теперь нам нужно создать страницу с регистрацией нового пользователя. Стоит сразу продумать, что именно мы хотим иметь. Я решил, что для простой гостевой книги будет вполне достаточно иметь пользователей с уникальными логинами, а так же знать адрес их Web сайта (если он есть). Раз мы определились с тем что мы хотим знать о пользователе, значит мы можем начать проектировать нашу базу данных.

Заходим в phpMyAdmin. Создадим там базу с именем gb. В данной базе создадим таблицу Users со следующими полями:

Login varchar(50) unique //логин пользователя, уникальное поле password varchar(150) //пароль www varchar(255) //адрес сайта

А раз мы уже зашли в редактор базы, то можно сразу и подумать о том как мы будем хранить сообщения. В нашем случае вполне подойдет знать кто и когда оставил сообщение, ну и собственно текст нашего сообщения. Так же для удобство стоит пронумеровать наши сообщения. С этим мы определились, значит можно смело создавать еще одну таблицу Messages со следующей структурой:

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

С базой данных разобрались. Теперь переходим к файлу registration.php. Подведя итог вышеизложенному имеем:

Регистрация

Логин:
Пароль:
Пароль еще раз:
WWW: http://


На главную

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

то у нас, при отправке этих данных POST запросом, будет переменная

$_POST["vasa-peta"]

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

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

Гостевая книга "; } else { echo "Ваше сообщение не добавлено!


"; } } ?>
" name="login" /> " name="password" />

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

Вот по сути и все. Если код 100% рабочий, хорошо. Если нет, то советую Вам постараться самостоятельно исправить ошибки. Теперь обещанный раздел.

Самостоятельная работа
Как уже говорилось в начале, данное решение «кривое». Если Вы еще не поняли почему, то я сейчас поясню. Как вы могли заметить в файле book.php в форме добавления комментария присутсвуют несколько скрытых полей, при этом два из них — это введенный пользователем логин и пароль. Не хорошо, не правда ли? Попробуйте исправить данный недочет использую сессии (Как работать с сессиями в PHP).
Постарайтесь ответить на вопрос, чем отличаюься функции empty/isset и exit/die ?
Измените запрос выборки сообщений из базы так, чтобы при при выводе сообщений отображался web сайт автора сообщения.
Если вы заметили, то пароль пользователей в базе данных храниться в открытом виде, а это очень не хорошо. Отредактируйте код так, чтобы в базе хранился хэш пароля пользователя (например MD5 или SHA1).



Предыдущая статья: Следующая статья:

© 2015 .
О сайте | Контакты
| Карта сайта