Perl - статьи


Гостевая книга из Perl'овки - часть 3


print OUT $to_base;

и закрываем файл, а заодно и подпрограмму:

close (OUT); }

Нам осталось написать подпрограмму просмотра записей. Объявляем ее начало:

sub view {

Открываем файл на чтение:

open (BASE, "

Читаем содержимое файла в массив @base:

@base = <BASE>;

И закрываем файл gb.txt:

close (BASE);

Теперь формируем цикл для чтения содержимого массива @base:

for ($i=$#base; $i>=0; $i--) {

В начале цикла значение переменной $i равно количеству строк в массиве - мы будем читать массив с последней строки. Постепенно уменьшая значение $i до нуля, мы таким образом дойдем до первой записи в файле. Этот метод позволяет добиться "обратного" чтения файла - от самой свежей записи к самой ранней - и последняя добавленная запись будет появляться в самом верху страницы.

Как вы, надеюсь, помните, у нас все данные находятся в строках, причем каждая строка содержит дату, ник "гостя" и его сообщение без переносов строк. Для того чтобы на экране восстановить все "как было", нужно разбить эту строку, на чем цикл и закончится:

($date, $nick, $msg)=split (/ \|\| /, $base [$i]); print "$nick ($date):<br>$msg<br><br>"; }

Итак, все сообщения выведены. Что остается? Внизу, под ними, вывести форму для отправки новых сообщений:

print " <form action=$html_file method=get>

Nick: <input name=nick><br>

Message: <TEXTAREA ROWS=15 COLS=50 name=msg></TEXTAREA><br>

<input name=action value=post type=hidden>

<input type=submit value=Отправить>

</form>

"; }

Остается дизайн. Нет ничего проще. Делаем самую обычную HTML-страничку с таким дизайном, какой вам нравится, и вставляем в то место, где должны быть записи, такой SSI-код:

<!--#include virtual="/cgi-bin/guestbook.pl?$QUERY_STRING" -->

Называем файл так, как указано в переменной $html_file гостевой книги:

guest.shtml

И радуемся, потому что для приема гостей все готово. Напомню только, что это - очень простой вариант гостевой книги. В идеале нужно ввести запрет на HTML-теги, что не очень сложно. Можно еще организовать постраничный вывод записей, скажем, по 10 штук на страничке, картинки-смайлики, административный интерфейс… Давайте сделаем это домашним заданием. А в следующий раз проверим, как вы справились с административным скриптом, и если что-то не получилось, то напишем его вместе.




Начало  Назад  



Книжный магазин