позволяет посетителю изменить страницу так,
Сценарий, приведенный в листинге 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:
Содержание Назад Вперед