Лістинг 5.13. counter.pl

#!/usr/bin/perl

use CGI;

$co = new CGI;

open (COUNT, "<counter.dat")

or die "Could not open counter data file!";

$count = <COUNT>;

close COUNT;

$count++;

open (COUNT, ">counter.dat");

print COUNT $count;

close COUNT;

print

$co->header

$co->start_html(

-title=>'Counter Example'

-author=>'Andrew'

-BGCOLOR=>'white'),

$co->center($co->h1('Counter Example')) $co->p,

$co->center($co->h3("Current count ", $count)) $co->p,

$co->center($co->h3("Reload the page to update the count"))

$co->end_html;

Цей сценарій дуже простий: все, що він робить, — це читає число, що зберігається в counter.dat, збільшує його на одиницю, записує назад в counter.dat і потім показує збільшений лічильник

Створюємо гостьову книгу.Створення гостьової книги — крок вперед в порівнянні з лічильником. Гостьова книга збирає коментарі користувачів і зберігає їх у файлі, що зазвичай має формат HTML, аби потім виводити їх на сторінці. Наша гостьова книга використовує три файли, що зберігаються в одному каталозі: guestbook.htm (лістинг 6-14), guestbook.pl (лістинг 6-15) і book.htm (лістинг 6-16). Перший є обличчям гостьової книги, тобто саме ця сторінка вказує користувачеві, що він може додати запис в книгу відвідувачів. Вона отримує ім'я користувача і коментар. Коли користувач натискує на кнопку підтвердження, дані посилаються сценарію guestbook.pl; іншими словами, якщо ви використовуєте цей сценарій, вам слід змінити вказаний URL в guestbook.htm на реальний URL guestbook.pl:

<BODY><H1>Please add to my guestbook</H1>

<FORM METHOD=POST ACTION=

"http://www.yourself.com/cgi/guestbook.pl">

У guestbook.pl (див. лістинг 6-15) ми відкриваємо власне гостьову книгу, що зберігається у файлі book.htm. Основна ідея — додати в неї ім'я користувача і його коментар, але book.htm закінчується тегами </BODY></HTML>. Тому спочатку треба встановити покажчик файлу перед цими словами за допомогою наступної коду:

open (BOOK, ">>book.htm") or die "Could not open guestbook!";

seek (BOOK, -lenght($co->end_html), 2);

Оскільки рядки </BODY></HTML> в даному випадку створюються за допомогою CGI-метода end_html, ми відкатуємося назад на довжину рядка, що генерується, що дозволяє нам не залежати від того, що метод end_html виводитиме в наступних версіях модуля CGI.pm.

Після цього код записує замість тегів </BODY></HTML> нові дані, додаючи в кінці ті ж теги викликом CGI-метода end_html. Потім guestbook.pl створює сторінку, на якій розташовується вдячність користувачеві за коментарі і гіперпосилання, позволя­ющая проглянути вміст гостьової книги. Іншими словами, якщо ви використовуєте цей сценарій, вам слід змінити URL, приведений в лістингу, на реальний URL book.htm (переконавшись, що права доступу для цього файлу досить низькі, аби guestbook.cgi міг записувати в нього дані):

"If you whant to take а look at the guest book "

$co->a({href=> "http://www.yourserver.com/cgi/book.htm"},

"click here"),".",

Якщо користувач клацає на гіперпосиланні, відкривається гостьова книга, а посилання на неї можна розташувати на будь-якій іншій Web-сторінці вашого розділу. Ім'я користувача і коментарі відображуються в гостьовій книзі разом з часом додавання запису. Файл guestbook.pl наводить в безпечний стан будь-який код HTML, який користувач може спробувати ввести в гостьову книгу, заміщаючи будь-які символи < HTML-кодом &lt (це робиться так: $username =~ s/</&lt і $text =~ s/</&lt), який виводить "<", аби не дозволяти броузеру намагатися розібрати коментарі користувача як HTML. Це означає, що будь-який код HTML, який користувач спробує ввести в гостьову книгу, буде виведений як текст і не виконуватиметься.

Відмітьте, що ви можете набудувати guestbook.pl так, щоб він приймав електронні адреси відвідувачів (втім, все більше і більше користувачів не бажають залишати свої адреси не стільки з міркувань секретності, скільки із-за програм, які сканують мережу у пошуках адрес електронної пошти, а потім продають отримані списки розповсюджувачам реклами). Ви також можете видозмінити файл гостьової книги book.htm, додавши графіку з по потужністю тега HTML <IMG>, встановивши фонове зображення і так далі Просто стежите, аби останнім, що ви виводите в book.htm був текст </BODY></HTML> (або виведення поточної версії CGI-метода end_html, оскільки в новій версії пакету CGI.pm він може змінитися), аби guestbook.pl міг відкататися на необхідне число символів і замінити ці теги новим коментарем.

Підказка. Якщо ви не хочете залежати від версії модуля CGI.pl, записуйте в окремий файл довжину тексту, виведеного методом end_html при останньому записі в гостьову книгу і використовуйте для установки покажчика це значення, а не довжину рядка, end_html, що виводиться.








Дата добавления: 2016-04-02; просмотров: 688;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.