Риба inurl guestbook php form. Гостьова книга на PHP
В даному уроці ми створимо гостьову книгу на мові програмування PHP з використанням AJAX. Записи будуть зберігатися в базі даних. Таблиця буде містити наступну інформацію: ім'я відправника, адреса email, IP адреса і дата-час останнього запису. Використовуватиметься jQuery (для реалізації AJAX). Також буде реалізована проста захист від спаму - можна розміщувати не більше одного запису кожні 10 хвилин.
Крок 1. SQL
Для роботи нашого додатки потрібно створити таблицю:
CREATE TABLE IF NOT EXISTS `s178_guestbook` (` id` int (10) unsigned NOT NULL auto_increment, `name` varchar (255) default" ",` email` varchar (255) default "", `description` varchar (255) default "", `when` int (11) NOT NULL default" 0 ",` ip` varchar (20) default NULL, PRIMARY KEY ( `id`)) ENGINE \u003d MyISAM DEFAULT CHARSET \u003d utf8;
Крок 2. PHP
Основний файл буде містити наступний код:
guestbook.php
\u003d ") \u003d\u003d 1) error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED); else error_reporting (E_ALL & ~ E_NOTICE); require_once (" classes / CMySQL.php "); // including service class to work with database // Отримуємо IP відвідувача function getVisitorIP () ($ ip \u003d "0.0.0.0"; if ((isset ($ _ SERVER [ "HTTP_X_FORWARDED_FOR"])) && (! empty ($ _ SERVER [ "HTTP_X_FORWARDED_FOR"]))) ($ ip \u003d $ _SERVER [ "HTTP_X_FORWARDED_FOR"];) elseif ((isset ($ _ SERVER [ "HTTP_CLIENT_IP"])) && (! empty ($ _ SERVER [ "HTTP_CLIENT_IP"]))) ($ ip \u003d explode ( ".", $ _ SERVER [ "HTTP_CLIENT_IP"]); $ ip \u003d $ ip. ".". $ ip. ".". $ ip. ".". $ ip;) elseif ((! isset ($ _ SERVER [ "HTTP_X_FORWARDED_FOR"])) | | (empty ($ _ SERVER [ "HTTP_X_FORWARDED_FOR"]))) (if ((! isset ($ _ SERVER [ "HTTP_CLIENT_IP"])) && (empty ($ _ SERVER [ "HTTP_CLIENT_IP"]))) ($ ip \u003d $ _SERVER [ "REMOTE_ADDR"];)) return $ ip;) // Отримуємо останні записи в гостьовій книзі function getLastRecords ($ iLimit \u003d 3) ($ sRecords \u003d ""; $ aRecords \u003d $ GLOBALS [ "MySQL"] -\u003e getAll ( "SELECT * FROM` s178_guestbook` ORDER BY `id` DESC L IMIT ($ iLimit) "); foreach ($ aRecords as $ i \u003d\u003e $ aInfo) ($ sWhen \u003d date ( "F j, Y H: i", $ aInfo [ "when"]); $ sRecords. \u003d<< ($ AInfo [ "description"])