Perl - специальный справочник


           

позволяет посетителю изменить страницу так,


Сценарий, приведенный в листинге 21.4, позволяет посетителю изменить страницу так, чтобы при следующих визитах она бы приветствовала его по имени, а в день рождения еще и поздравляла бы. Этот сценарий вполне корректен — он не устанавливает никаких теневых посылок до тех пор, пока пользователь сам не предоставит или не обновит необходимую информацию. Сценарий проверяет данные, полученные от пользователя, чтобы убедиться, что день рождения вве

ден в формате месяц/день (mm/dd) (и содержит лишь цифры, а единственным символ / находится в нужном месте) и удаляет теги HTML, которые он мог ввести в строку для имени.

Когда пользователь впервые открывает сценарий hellocookie.cgi, он видит то, что изображено на рис. 21.2. Чтобы настроить эту страницу, он может ввести имя и дату рождения в формате mm/dd. После нажатия на кнопку подтверждения сценарий записывает информацию под именем greetings, сохраняя имя и день рождения, на компьютере клиента.

Когда пользователь снова открывает hellocookie.cgi, сценарий проверяет, нет ли у посетителя теневой посылки greetings, и, если она есть, выводит приветствие (рис. 21.3), включая при необходимости поздравление с днем рождения. Вот и все.



Рис. 21.2. Устанавливаем теневую посылку



Рис. 21.3. Читаем теневую посылку

Читаем и записываем теневые посылки (cookies)

Как записать теневую посылку

Записать теневую посылку с помощью CGI.pm несложно. В нашем примере она будет называться "greetings" и хранить информацию в хэше %greetings, уничтожая ее по истечении года:

$co = new CGI;

$greetingcookie = $co->cookie(

-name=>'greetings',

-value=>\%greetings,

-expires=>'+365d'

);

print

$co->header(-cookie=>$greetingcookie);

Заметьте, что для создания теневой посылки вы передаете ее в качестве именованного параметра CGI-методу header.

Как прочитать теневую посылку

Для чтения теневой посылки используется обычный CGI-метод, получающий в качестве параметра имя посылки. После этой операции можно использовать данные хэша %greetings:


Содержание  Назад  Вперед