Гостевая книга
Итак, вот алгоритм работы сценария гостевой книги:
- При загрузке посетителем страницы книги просканировать папку с сообщениями, выбрать оттуда сообщения, относящиеся к данной книге (попросту найдя в именах содержащих их файлов индекс этой книги), отсортировать их и вставить в web-страницу.
- При вводе посетителем сообщения пересчитать уже имеющиеся и сохранить новое сообщение в файле с именем, состоящим из индекса текущей гостевой книги и временной метки Unix.
Есть, впрочем, еще одно пожелание. Обратите внимание – если следовать данному алгоритму, то сообщение, помещенное посетителем в гостевую книгу, будет просто вставлено в текст той страницы, на которой она расположена. А это значит, что какой-нибудь злоумышленник вполне может поместить в сообщение гостевой книги код на РНР и тот будет преспокойно выполнен! А результат такого выполнения для владельца сайта непредсказуем. Это может быть и удаление с сайта всех файлов, и размещение на нем совсем не того, что хотелось бы, и массовая почтовая рассылка….Поэтому наш алгоритм следует дополнить еще одним пунктом:
- Перед сохранением сообщения посетителя в файл удалить из него все тэги или сделать их нераспознаваемыми ни интерпретатором РНР, ни браузером – например, конвертировав в соответствующие им сочетания символов, попросту отображающие их на экране.
Ну а теперь посмотрим, как все это реализуется на РНР.
В текст каждой web-страницы, на которой должна быть расположена гостевая книга, следует вставить следующий код (см. рис. 9.2):
<?php $nоm="уникальная аббревиатура книги, без пробелов и специальных символов, например, book01"; include ("niz.php");?>
Думается, смысл этого сценария ясен – вначале устанавливается индекс гостевой книги, а затем включается единый для всех книг файл с собственно отображающим сообщения кодом – в данном случае niz.php.
Поскольку именно код файла niz.php отображает сообщения гостевой книги, то и вышеприведенный фрагмент кода следует помещать именно там, где эти сообщения должны на web-странице располагаться.
Рис. 9.2. Всего три файла – и гостевая книга. А можно даже два