Иллюстрированный самоучитель по PHP

Гостевая книга

Настаивать на том, чтобы в качестве индекса гостевой книги использовать имя страницы, на которой она располагается, именно без расширения, не обязательно – если этого не сделать, то в результате работы рассмотренного сценария сообщения будут помещаться в файлы, имена которых будут начинаться с этого полного имени (т. е. вместе с расширением) – всего лишь небольшое косметическое неудобство.

Бесспорно, данный код можно улучшать. Можно, например, сделать так, чтобы на странице отображались не сразу все сообщения, а лишь часть, скажем, последний десяток. Для этого следует немного изменить код вывода сообщений, вместо конструкции foreach использовав, скажем, оператор for в том случае, если количество сообщений больше десяти:

<?php
$dirct="gb";
$nom=substr(basename($PHP_SELF), 0, -4);
if ($otziv!=B")
{
$otznam=$nom.time();
$hdl = fopen("$dirct/$otznam", "w+")
fwrite($hdl, nl2br(strip_tags($HTTP_POST_VARS['otziv']))
fclose($hdl); }
$hdl=opendir($dirct); while ($file = readdir($hdl)) {
if (strstr($file, $nom)==True) { $a[]=$file;
$1=sizeof($a); if ($l!=0) {
rsort($a);
if ($l>10)
{
for ($i = 0; $i < 10; $i++)
{
include ("$dirct/$a[$i]n);
echo ("<br>(разделитель сообщений)");
else
foreach ($a as $k)
{
include ("$dirct/$kB);
echo ("<br>(разделитель сообщений)");
}
}
}
?>

Ваш комментарий:

<form method="post" action="<?php echo ($nom.".php");?>" name="form">
<textarea name="otziv" cols="60" rows="10" wrap="virtual"></textarea>
<input name="submit" type="submit" value="Послать отзыв">
</form>

Тогда на странице отобразятся лишь последние 10 сообщений. (Код, выводящий остальные сообщения так же, по десяткам, сделайте самостоятельно.)

Так что, как видите, сделать гостевую книгу на РНР не просто, а очень просто. Весь ее код уместится на одном экране, даже на мониторах с небольшим разрешением. Но даже такой простой скрипт таит в себе немало возможностей для творчества.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.