Книгата за гости не заема много ресурси на MySQL сървъра. Тя се нуждае само от една таблица. Отворете phpMyAdmi, изберете си работната база данни и изпълнете следната SQL заявка:
CREATE TABLE gb (
ID int not null auto_increment,
IP varchar(20),
username varchar(50),
msg text,
primary key(id)
);
Формата, чрез която потребителят ще остави коментар в книгата за гости, не е никак сложна. Нейният HTML код е следният:
Създайте файл gb.html
<form method=post action=gb-add.php>
<h1>Добави коментар</h1>
<h2>Твоето име</h2>
<input type=text name=username>
<h2>Текст:</h2>
<textarea rows=10 cols=50 name=msg></textarea>
<h2>Антиспам: Текуща година:</h2>
<p><input type=text name=antispam>
<p><input type=submit name=go>
</form>
Формата gb.html предава данните към сценария gb-add.php. Той определя IP адреса на потребителя, проверява отговора, въведен в специалното поле antispam (в случая правилният отговор е 2011) и ако потребителят е дал правилен отговор, добавя запис в таблицата gb. Кодът на сценария gb-add.php е следният:
Създайте файл gb-add.php
<?php
//Получаване на отговор от потребителя
$answer = $_POST['antispam'];
if ($answer == 2011) {
//Получаваме IP адреса на потребителя
$ip = $_SERVER['REMOTE_ADDR'];
//Получаваме името на потребителя, коментарите и премахваме
//от тях HTML тагове:
$username = strip_tags($POST['username']);
$msg = strip_tags($_POST['msg']);
//Формираме SQL заявка
$q = "insert into gb values(0, "$ip", "$username", "$msg"); ";
//Свързваме се към сървъра
mysql_connect("localhost", "root", "pass");
//Избираме БД
mysql_select_db("root");
//Изпращаме заявката
mysql_query($q);
echo "<h1>Благодаря за твоят коментар за сайта :)</h1>";
}
else die('Мммм, грешен отговор от антиспама :(');
?>
Създайте файл gb.php
<?php
//Свързваме се към сървъра и избираме БД
mysql_connect("localhost","root","pass");
mysql_select_db("root");
//Брой коментари на страницата
$N = 5;
echo "<h1>Welcome to my guestbook</h1>";
echo "<p><a href=gb.html>Пиши във книгата</a>";
//Изчисляваме максималния брой записи
$r1=mysql_query("select count(*) as records from gb");
$f = mysql_fetch_row($r1);
//Знаем колко записа има в таблицата
$rec_count = $f[0];
//Ако страницата не е указана, показваме първата
if (!isset($_GET['page'])) $page=0;
else $page = $_GET['page'];
//Определяме кои коментари да покажем
$records = $page * $N;
//Заявка, показваща записи от $records до $N
$q='select * from gb limit '.$records.",$N";
echo "<p>Общо коментари: $rec_count<br>";
$result = mysql_query($q);
$max = mysql_num_rows($result);
//Ако страницата не е първа, показваме Back
if ($page > 0) {
$p = $page - 1;
echo "<a href=gb.php?page=$p>Back</a> ";
}
$page++;
//Показваме връзка Next
if ($records+$N < $rec_count)
echo "<a href=gb.php?page=$page>Next</a>";
//Показваме коментарите
for ($i=0; $i<$max; $i++)
{
$row=mysql_fetch_array($result);
//Показваме потребителя
echo "<p><table width=100%>
<tr><td bgcolor=grey width=10%>
<font color=white># $row[id] User: $row[username]</font></td>
</tr></table>";
//Показваме текста на коментара
echo "<p>$row[msg]";
}
?>