<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>508.com.ua &#187; name email508.com.ua</title>
	<atom:link href="https://508.com.ua/name-email/feed/" rel="self" type="application/rss+xml" />
	<link>https://508.com.ua</link>
	<description>508.com.ua</description>
	<lastBuildDate>Tue, 01 Jul 2025 17:00:27 +0000</lastBuildDate>
	<language>ru-RU</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.25</generator>
	<item>
		<title>Улучшенная Гостевая книга</title>
		<link>https://508.com.ua/uluchshennaja-gostevaja-kniga/</link>
		<comments>https://508.com.ua/uluchshennaja-gostevaja-kniga/#comments</comments>
		<pubDate>Mon, 03 Sep 2012 11:29:11 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Веб Уроки]]></category>
		<category><![CDATA[color 880000]]></category>
		<category><![CDATA[email message]]></category>
		<category><![CDATA[name email]]></category>
		<category><![CDATA[name email message]]></category>
		<category><![CDATA[гостевой книги]]></category>

		<guid isPermaLink="false">http://wordpress.work/uluchshennaja-gostevaja-kniga/</guid>
		<description><![CDATA[Я решил еще один урок посвятить созданию гостевой книги. Ничего не может стоять на месте. В мире все развиваться и усовершенствуется. В этом уроке я покажу Вам, как создать красивую и простую гостевую книгу, которая будет использовать PHP и MySql. Первый урок по созданию гостевой книги Вы можете посмотреть здесь. Для начала нам необходимо создать [&#8230;]]]></description>
				<content:encoded><![CDATA[<p> Я решил еще один урок посвятить созданию гостевой книги. Ничего не может стоять на месте. В мире все развиваться и усовершенствуется. В этом уроке я покажу Вам, как создать красивую и простую гостевую книгу, которая будет использовать PHP и MySql. Первый урок по созданию гостевой книги Вы можете посмотреть здесь.</p>
<p> Для начала нам необходимо создать базу данных.хранения данных гостевой книги. Всё, что нам необходимо знать от пользователя, это его имя (или ник) и сам комментарий. При желании пользователь сможет сообщить адреса электронной почты и домашней странички. Так же нам понадобится ещё одно поле: уникальный идентификатор для каждой записи. Ну и дата, конечно.</p>
<p><span id="more-12618"></span>
<p> Вот что должно получиться:</p>
<p> CREATE TABLE gb ( id int(10) unsigned NOT NULL auto_increment, datetime datetime DEFAULT &#8217;0000-00-00 00:00:00&#8242; NOT NULL, name varchar(100) NOT NULL, email varchar(100), www varchar(100), message text NOT NULL, PRIMARY KEY (id) );
<p> Теперь можно приступать к написанию самого скрипта. Для начала создадим файл с настройками гостевой книги. Советую делать подобный файл при написании всех скриптов (и инклудить его где необходимо функциями include(&lsquo;falename&rsquo;) или once_include(&lsquo;filename&rsquo;)).</p>
<p> С помощью такого файлы можно быстро редактировать настройки, не разбираясь в написанном коде:</p>
<p> &lt;?php // константы define(&#8216;PATH&#8217;, &#8216;/gb/&#8217;); // путь к скрипту гостевой книги define(&#8216;RECSPERPAGE&#8217;, 10); // количество записей на одной странице define(&#8216;ADMIN_EMAIL&#8217;, &#8216; example@sexample.ru&#8217;); // email изменить на свой define(&#8216;ERROR_LOG_FILE&#8217;, &#8216;logs/error.log&#8217;); // файл лога ошибок // Параметры Базы Данны define(&#8216;DBHOST&#8217;, &#8216;localhost&#8217;); // имя хоста define(&#8216;DBUSER&#8217;, &#8216;root&#8217;); // имя пользователя define(&#8216;DBPASSWD&#8217;, &#187;); // пароль пользователя к БД define(&#8216;DBNAME&#8217;, &#8216;test&#8217;); // имя базы данных ?&gt;
<p> Подумаем, какие функции в гостевой книге нам понадобятся. Нам необходимо будет взаимодействовать с СУБД (напомню, мы выбрали MySQL), обрабатывать вводимые пользователем данные (никогда &laquo;не доверяйте&raquo; вводимым в формы данным). Так же для функций администрирования нам понадобится отличать администратора от простых пользователей (на будущее лучше выводить админ-пенель для редактирования в отдельный фал и вообще в отдельную директорию, закрывая её пароль).</p>
<p> Начнём с работы с СУБД.</p>
<p> &lt;?php /** recource db_connect ( string host, string user, string passwd, string dbname ) * Подключение к СУБД и открытие базы данных */ function db_connect($host, $user, $passwd, $dbname) { $link = mysql_pconnect($host, $user, $passwd) or die(&#8216;Could not connect to database&#8217;); mysql_select_db($dbname) or die(&#8216;Could not select database&#8217;); return $link; } /** Выполняет запрос к БД * * @param текст запроса * @return resource id */ function db_query($query) { $result = mysql_query($query) or die(&#8216;Bad database query&#8217;); return $result; } /** Выполняет запрос к БД (placeholder) * * @param текст запроса * @param* * @return resource id */ function db_query_ex($query) { $values = func_get_args(); array_shift($values); $i = 0; return db_query(preg_replace(&#8216;%?%e&#8217;, &#8216;&quot;&#8217;&quot;.addslashes($values[$i++]).&quot;&#8217;&quot;&#8217;,$query)); } ?&gt;
<p> Проверка и фильтрация вводимых пользователем данных).</p>
<p> &lt;?php /** * Проверяет является ли строка адресом e-mail */ function strings_isemail($string) { return preg_match(&#8216;%[-.w]+@[-w]+(?:.[-w]+)+%&#8217;, $string); } /** * Добавление ссылок на http и e-mail */ function strings_addlinks($string) return preg_replace(&#8216;%((?:http /** * Чистка строки */ function strings_clear($string) { $string = trim($string); $string = stripslashes($string); return htmlspecialchars($string, ENT_QUOTES); } /** * Обрезание строки */ function strings_stripstring($text, $wrap, $length) { $text = preg_replace(&#8216;%(S{&#8216;.$wrap.&#8217;})%&#8217;, &#8217;1 , $text); return substr($text, 0, $length); } ?&gt;
<p> Написание аутентификации для администратора (отличить обычного пользователя от пользователя с возможностями удаления и редактирования) я оставляю вам как &laquo;домашнее задание&raquo;.</p>
<blockquote><p> Далее идёт достаточно большой модуль, в котором содержится почти весь HTML-код гостевой книги, &#8212; шаблон. В нём нет ничего сложного и его написание можно вполне под силу верстальщику сайта, если у вас таковой имеется.</p></blockquote>
<p> &lt;?php /** * заголовок страницы */ function template_header($page) { ?&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;page &lt;?=$page?&gt; &lt; fjGuestbook Demo&lt;/title&gt; &lt;style&gt; body { padding: 15px; margin: 0; color: #333; background-color: #eee; border-left: 30px solid #adba8e; font: 500 .9em verdana, arial, helvetica; } a:link{ color: #250; } a:visited{ color: #639; } a:active,a:hover { color: #c00; text-decoration: underline; } h1 { font-size: 150%; } h2 { font-size: 110%; } .c { margin-bottom: 10px; } .cn { background-color: #d2d6bc; padding: 2px 4px; margin-bottom: 4px; } &lt;/style&gt; &lt;/head&gt; &lt;body&gt; &lt;h1&gt;Гостевая книга&lt;/h1&gt; &lt;?php } /** * подвал страницы */ function template_footer() { ?&gt; &lt;p&gt;Гостевая книга Copyright &copy; 2008 &lt;a href=&quot;l&gt; &lt;?php } /** * форма добавления новой записи */ function template_form($name, $email, $www, $message, $error) { // вывод сообщения об ошибке function error($error) { if($error) echo &#8216;&lt;br&gt;&lt;font color=#880000&gt;&#8217;.$error.&#8217;&lt;/font&gt;&#8217;; } echo &#8216;&lt;h2&gt;Добавить новое сообщение&lt;/h2&gt; &lt;p&gt;&lt;table cellspacing=&quot;2&quot; cellpadding=&quot;2&quot; border=&quot;0&quot;&gt; &lt;form action=&#8217;.PATH.&#8217;?add=1 method=post&gt;&lt;tr&gt; &lt;td&gt;Имя&lt;font color=#880000&gt;*&lt;/font&gt;:&lt;/td&gt; &lt;td&gt;&lt;input type=text name=&quot;name&quot; size=30 maxlength=100 value=&quot;&#8217;.$name.&#8217;&quot;&gt;&#8217;; @error($error['name']); echo &#8216;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Email:&lt;/td&gt; &lt;td&gt;&lt;input type=text name=&quot;email&quot; size=30 maxlength=100 value=&quot;&#8217;.$email.&#8217;&quot;&gt;&#8217;; @error($error['email']); echo &#8216;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;URL:&lt;/td&gt; &lt;td&gt;&lt;input type=text name=&quot;www&quot; size=30 maxlength=100 value=&quot;&#8217;.$www.&#8217;&quot;&gt;&#8217;; echo &#8216;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Сообщение&lt;font color=#880000&gt;*&lt;/font&gt;:&lt;/td&gt; &lt;td&gt;&lt;textarea cols=40 rows=5 name=&quot;message&quot;&gt;&#8217;.$message.&#8217;&lt;/textarea&gt;&#8217;; @error($error['message']); echo &#8216;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt; &lt;/td&gt; &lt;td&gt;&lt;small&gt;&lt;font color=#880000&gt;*&lt;/font&gt; &mdash; Обязательные поля&lt;/small&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt; &lt;/td&gt; &lt;td&gt;&lt;input name=&quot;sb&quot; type=submit value=&quot;Добавить сообщение&quot;&gt;&lt;/td&gt; &lt;/form&gt;&lt;/tr&gt; &lt;/table&gt;&#8217;; } /** * печать одной записи гостевой книги */ function template_show_body($id, $name, $email, $www, $message, $datetime) { $out = &#8216;&lt;div class=c&gt;&lt;div class=cn&gt;&lt;b&gt;&#8217;.$name.&#8217;&lt;/b&gt;&#8217;; // если есть email или homepage &#8212; печатаем и if($email || $www) &#8216;; $out .= &#8216; пишет &#8216;.$datetime.&#8217;:&lt;/div&gt;&#8217;.$message.&#8217;&lt;/div&gt;&#8217;; // если гостевую книгу просматривает администратор &#8212; выводим кнопку // удаления ненужной нам записи if(auth_is_admin()) { $out .= &#8216;&lt;div class=c&gt;[ &lt;a href='.PATH.'?admin=1&amp;del='.$id. '&gt;удалить&lt;/a&gt; ]&lt;/div&gt;&#8217;; } return $out; } ?&gt;
<p> И вот, мы наконец-то дошли до главного. До модуля гостевой книги. Постараюсь написать побольше комментариев, чтобы вам было понятно.</p>
<p> &lt;?php /** * Создание таблицы, если её ещё нет */ function gb_install() { db_query ( &#8216;CREATE TABLE IF NOT EXISTS gb ( id int(10) unsigned NOT NULL auto_increment, datetime datetime NOT NULL default &#8217;0000-00-00 00:00:00&#8242;, name varchar(100) NOT NULL default &#187;, email varchar(100) default NULL, www varchar(100) default NULL, message text NOT NULL, PRIMARY KEY (id), INDEX (datetime) ) TYPE=MyISAM;&#8217; ); } /** * Добавление записи в гостевую книгу */ function gb_add($name, $email, $www, $message, &amp;$error) { // проверяем правильность заполнения полей $error = &#187;; if(empty($name)) $error['name'] = &#8216;Это обязательное поле&#8217;; if(empty($message)) $error['message'] = &#8216;Это обязательное поле&#8217;; if(!empty($email) &amp;&amp; !strings_isemail($email)) $error['email'] = &#8216;Это не email&#8217;; // если не было ошибок &#8212; добавляем if(!$error) { // чистим данные $name = strings_clear($name); $message = strings_clear($message); $name = strings_stripstring($name, 15, 100); $email = strings_stripstring($email, 100, 100); $www = strings_stripstring($www, 100, 100); $message = strings_stripstring($message, 100, 2000); $message = nl2br($message); // если пользователь поленился написать / это за него if(!empty($www) &amp;&amp; &#8216;/&#8217;.$www; // запрос на добавление записи в базу данных db_query_ex(&#8216;INSERT INTO gb (name, email, www, message, datetime) VALUES(?, ?, ?, ?, NOW())&#8217;, $name, $email, $www, $message); // перекидываем браузер на первую страницу header(&#8216;Location: &#8216;.PATH.&quot;?page=1&quot;); } } // удаление записи из гостевой книги function gb_delete($id) { // запрос на удаление записи из базы данных // WHERE id = &#8216;.$id указывает на запись, которую следует удалить db_query_ex(&#8216;DELETE FROM gb WHERE id = ?&#8217;, $id); // И снова перекидываем пользователя header(&#8216;Location: &#8216;.PATH.&quot;?page=1&quot;); // ??? } // вывод страницы с записями function gb_show($page) { // положение первой записи страницы $begin = ($page &#8212; 1) * 10; // выборка записей из базы данных // SELECT * FROM gb &#8212; все поля из бд gb // ORDER BY datetime DESC &#8212; сортировка по дате, новые сверху // LIMIT &#8216;.$begin.&#8217;,&#8217;.RECSPERPAGE &#8212; ограничение: // RECSPERPAGE (см. defines.php) записей начиная с $begin $result = db_query(&#8216;SELECT * FROM gb ORDER BY datetime DESC LIMIT &#8216;. $begin.&#8217;, &#8216;.RECSPERPAGE); $out = &#187;; // цикл по всем выбранным записям while($row = mysql_fetch_array($result)) $out .= template_show_body($row['id'], $row['name'], $row['email'], $row['www'], $row['message'], $row['datetime']); // уничтожаем результат mysql_free_result($result); echo $out; } // вывод списка страниц function gb_showpages($current) { // узнаем число записей в гостевой книге $result = db_query(&#8216;SELECT * FROM gb&#8217;); $rows = mysql_num_rows($result); if($rows) for($i = 1; $i &lt;= $pages; $i++) &lt;a href=&#8217;.PATH.&#8217;?page=&#8217;.$i.&#8217;&gt;&#8217;.$i.&#8217;&lt;/a&gt;&#8217;; } ?&gt;
<p> И наконец, последний штрих &ndash; объединяем это вместе:</p>
<p> &lt;?php // подключаем модули require_once &#8216;my/defines.php&#8217;; require_once &#8216;my/template.php&#8217;; require_once &#8216;engine/lib/strings.php&#8217;; require_once &#8216;engine/lib/auth.php&#8217;; require_once &#8216;engine/lib/bd.php&#8217;; require_once &#8216;engine/gb.php&#8217;; // подключаемся к БД db_connect(DBHOST, DBUSER, DBPASSWD, DBNAME); // создаём таблицу, если её нет gb_install(); // получаем данные формы, если форма была отправлена if (!empty($_POST['sb'])) { $name = @$_POST['name']; $email = @$_POST['email']; $www = @$_POST['www']; $message = @$_POST['message']; $formerr = &#187;; } else { $name = $email = $www = $message = $formerr = &#187;; } // если в GET-запросе не указан номер страницы, выводим первую if(is_numeric(@$_GET['page'])) $page = $_GET['page']; else $page = 1; // если нужно добавить запись, добавляем if(@$_GET['add']) gb_add($name, $email, $www, $message, $formerr); // если нужно удалить запись, удаляем if(isset($_GET['del']) &amp;&amp; auth_is_admin()) gb_delete(intval($_GET['del'])); // печатаем гостевую книгу template_header($page); gb_showpages($page); gb_show($page); gb_showpages($page); template_form($name, $email, $www, $message, $formerr); template_footer(); ?&gt;
<p> Как видите, несмотря на слегка объёмный код, ничего сложного в гостевой книге на php и mysql не было. Данный скрипт не является абсолютно верным решением, лучше будет, если Вы его перед применением подредактируете и проверите на уязвимости.</p>
]]></content:encoded>
			<wfw:commentRss>https://508.com.ua/uluchshennaja-gostevaja-kniga/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
