Гостевая книга
В каждую страницу, на которой располагается гостевая книга, следует включить такой сценарий:
<?php $nоm="имя (без расширения) web-страницы, на которой расположена гостевая книга"; include ("niz.php");?>
Ну а файл niz.php должен содержать весь остальной код:
<?рhр $dirct="gb"; if ($otziv!="") { $otznam=$nom.time(); $hdl = fopen("$dirct/$otznam", "w+"); fwrite($hdl,nl2br(strip_tags($HTTP_POST_VARS['ot ziv']))); fclose($hdl); } $hdl=opendir($dirct); while ($file = readdir($hdl)) { if (strstr($file, $nom)==True) { $a[]=$file; $l=sizeof($a); if ($l!=0) { rsort($a); foreach ($a as $k) include ("$dirct/$k"); 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>
В отличие от разобранного нами кода тут нет необходимости передавать в форме индекс гостевой книги (так как он все равно устанавливается на странице гостевой книги и тем самым доступен и на всем протяжении включенного в нее niz.php), однако необходимо сообщить имя содержащего эту гостевую книгу файла – дабы именно его указать в качестве обработчика формы ввода сообщения. Проще всего именно это имя и указывать в качестве индекса гостевой книги.
Хотя в принципе указывать в сценарии имя файла в качестве индекса гостевой книги не надо. В начало кода в файле niz.php можно включить код, который бы этот самый индекс определял бы автоматически. Скажем, брал бы значение переменной $PHP_SELF – она содержит имя текущего файла вместе с путем к нему от корневой директории сайта (даже если она находится в файле, включенном в текущий с помощью оператора include), скажем, "/guestbooks/gbOl.php", а затем вытаскивал из него само это имя.
В РНР версии 4.1 и выше имя файла без расширения можно узнать командой basename (), указав в ее параметрах это самое расширение:
$nom=basename($PHP_SELF, ".php");
Примечание
Команда basename выделяет имя файла из его полного имени, указанного в ее параметре – вместе с путем по дереву директорий. Начиная с РНР версии 4.1, в ней можно также указывать расширение, которое должно быть отброшено в том случае, если оно будет найдено в имени файла. До версии 4.1 возможности только с помощью этой команды узнавать имя файла без расширения нет.
В РНР версии до 4.1 команда basename () имя файла без расширения выдать не сможет, однако расширение можно отбросить путем использования команды substr, указав в ее третьем параметре отрицательную величину – число символов от конца строки, которые не должны включаться в выделяемую строку (подробнее см. Главу 8):
$nom=substr(basename($PHP_SELF), 0, -4);
Если эту команду определения имени файла без расширения включить в самое начало кода файла niz.php, то установку значения переменной Snom на web-страницах, содержащих гостевые книги, можно убрать – достаточно одного оператора include:
<?php include ("niz.php"); "?>
…и абсолютно вся программа гостевой книги поместится в одном файле. Вам останется лишь вставлять его командой include всюду, куда захотите (да разве что еще саму папку для сообщений создать вручную вначале).