Сегодня я попытаюсь рассказать вам о том, как написать гостевую книгу на PHP и MySQL. Ничего сложного в этом нет, да и возможности данной гостевой не очень большие: постраничный вывод записей, возможность удалять записи. Допустим, что у вас уже есть PHP, MySQL и веб-сервер. Вы все установили и настроили. Начнем с создания таблицы, в которой будут храниться данные нашей гостевой книги. Будем спрашивать у пользователя имя и комментарий. При желании пользователь сможет сообщить адреса электронной почты и домашней странички. Для администрирования книги нам понадобится еще одно поле, уникальное для каждой записи, - идентификатор. Ну и дата, конечно. В итоге получается такая таблица: CREATE TABLE gb ( id int(10) unsigned NOT NULL auto_increment, datetime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, name varchar(100) NOT NULL, email varchar(100), www varchar(100), message text NOT NULL, PRIMARY KEY (id) ); Таблица у нас есть. Теперь можно приступать к программированию. Для начала определим константы, которые понадобятся нам в дальнейшем: <? /* * defines.php -- константы */ // общие константы define('PATH', '/gb/'); // путь к гостевой книге define('RECSPERPAGE', 10); // количество записей на одной странице // Параметры БД define('DBHOST', 'localhost'); // имя хоста define('DBUSER', 'root'); // имя пользователя define('DBPASSWD', 'root'); // пароль define('DBNAME', 'test'); // имя базы данных ?> Напишем модуль для работы с СУБД MySQL. Я вынес все функции работающие с MySQL в отдельный модуль, чтобы их можно было легко переписать при смене СУБД. Думаю, комментариев в исходнике будет достаточно. <? /* * bd.php -- работа с MySQL */ // подключение к СУБД и открытие базы данных function db_connect($host, $user, $passwd, $dbname) { $link = @mysql_connect($host, $user, $passwd) or die('Не могу подключиться к серверу баз данных'); @mysql_select_db($dbname) or die('Не могу открыть базу данных «'.$dbname.'»'); return $link; } // запрос к БД function db_query($query) { $result = @mysql_query($query) or die('Не могу сделать запрос к базе данных'); return $result; } // получение текущей записи результата в виде массива function db_fetch_array($result) { return mysql_fetch_array($result); } // уничтожение результата function db_free_result($result) { return mysql_free_result($result); } // получение числа записей (строк) в результате function db_num_rows($result) { return mysql_num_rows($result); } ?> Для написания нормальной гостевой книги нам понадобятся еще две библиотеки. Первая - работа со строками: <? /* * strings.php -- функции для работы со строками */ //проверяет является ли строка адресом e-mail function strings_isemail($string) { return ereg( '^([a-zA-Z0-9_]|-|.)+'. '@'. '([a-zA-Z0-9_]|-|.)+'. '[a-zA-Z]{2,4}$', $string); } //добавление ссылок на http и e-mail function strings_addlinks($string) { $string = ereg_replace("(http://[a-zA-Z0-9_.#%?/&=-]* )", "<a href="1">1</a>", $string); $string = ereg_replace("(([a-zA-Z0-9_]|-|.)+@([a-zA-Z 0-9_]|-|.)+[a-zA-Z]{2,4})", "<a href="mailto:1">1</a>", $string); return $string; } // чистка строки function strings_clear($string) { $string = stripslashes($string); //восстановление кавычек после формы $string = htmlspecialchars($string); //замена специальных символов их кодами //замена апострофа его кодом (нужно для того, чтобы нормально работали запросы) $string = str_replace("'", "'", $string); $string = trim($string); //снос ве%E |