Скрипт гостьової книги на PHP. Веб-дизайн та пошукова оптимізація Встановлення та русифікація Phoca Guestbook

» » @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-ти бальною системою.
Підтримувані мови

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

Частковий переклад. Деякі слова, як і раніше, англійською.
Іспанська, Російська, Шведська, Чеська, Хорватська, Португальська, Ісландська, Сербська, Данська.

Для HTML codes, guestbook programming might seem unchallenging at first, and rightly so. Коли ви збираєтеся на bookbook, basic information requested і it appears that anyone with fundamental nowledge of HTML programming language can write guestbook HTML codes. However, guestbooks, від кращого до бідолашного, потребує багато more skill than you think.

What is a Guestbook?

guestbook є онлайн way to let visitors до вашого сайту коментарів або запитання інформації. Більшість guestbooks post what is written to webpage so that everyone can read guest comments. Найбільші елементи ви можете знайти на guestbook:

  • Name or Username
  • Where they reside (тому ви можете встановити HTML code to hide this fact)
  • Email (загалом, ви можете вибрати цей факт і має це бути тільки для вашої електронної пошти для комунікації purposes
  • Comments
  • Деякі guestbooks forego a comments section for quick survey. Ви можете звичайно find question like "What did you think of this site: good, decent, bad, awesome" or "Was the information provided: enough, no enough, just right"
  • Options to request a reply or other information
Related Articles

Guestbooks може бути розроблений для того, щоб отримати це повідомлення до електронної пошти адреса вашої команди з тим, що ви не маєте, щоб log into the site to view guestbook entries.

Where to Find HTML Codes, Guestbook

Які ви знаєте HTML програмування, ви є початком веб-дизайнера або ви збираєтеся на guestbook on your site, використовуючи перевірені HTML codes може зберегти ваш час. Тексти, які ви можете керувати онлайн, є типово добре-виявлено і забезпечує велику основну програмування, необхідну для більш-до-можливості guestbooks.

  • Code в HTML Comment Box забезпечує основний outline з HTML code guestbook. Все, що потрібно для того, щоб customize текст для ваших потреб і для вашого домашнього імені. Інструкції є передбачені на початку сторінки. У коді includes lines for name and address.
  • Для великого вибору HTML codes and scripts, visit . З такими варіаціями і великим вибором, ви повинні бути здатні до того, що роботи в веб-сайті ви створюєте. Ви можете вибрати з основних guestbooks більше розширеного програмування, що включає в себе дрібні таблиці і коди для Macs і Linux machines. Codes є тільки 30-денні безкоштовні тріалки, якщо ви збираєтеся встановити коди, які ви збираєтеся отримати повну користь.
  • На Freebok вам може бути введена деяка основна інформація про те, що текст ви збираєтеся на ваш guestbook і веб-сайт буде створювати код для вас. Після того, як ви можете customize guestbook навіть більше, щоб створити template і editing code в Freebok's template layout mode. account in order to use Freebok.
  • Для того, щоб отримати guestbook with just a comment box, go to Guestbook Code . Інститут коду є загальним generated, але є п'ять опцій, які ви можете check and uncheck in order to alter the code slightly:
    • Collapse Guest Book. Це включає в себе link, що можна відкрити і продовжити guestbook на веб-сторінці.
    • Put Guest Book At Top. Якщо це не здійснено, guestbook і список повідомлень буде з'явитися протягом декількох місяців на сторінці.
    • Show Submission Date of Entries. Це буде add a date and time. Time will be the user's local time zone, no yours.
    • Profanity Filter. Deletes any profanities that people may write.
    • Ви можете також змінити номер коментарів, які були поставлені на сторінку для інших для отримання. Minimum is one and maximum is one hundred. Це recommended, що ви збираєтеся між 5-20.

Нещодавно отримав листа на 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("Помилка бази даних."); 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-код:

Гостьова книга Відгуки залишити відгук

mob_info