Cамо по себе cookie представляет собой пару имя=значение. Далее сервер при ответе посылает браузеру один или несколько cookie, которые связываются с данным сервером. И когда в следующий раз посещается этот же сервер, браузер передает ему вместе с запросом и сохраненнyю информацию. Все: пользователь освобожден от от повторного ввода данных при последующих посещениях этого сайта.
Cookie можно создать с помощью соответствующей функции cookie(). Она использует параметры:
Срок действия cookie:
| Формат | Значение |
| +Xs | X секунд с настоящего момента |
| +Xm | X минут с настоящего момента |
| +Xh | X часов с настоящего момента |
| -Xd | X дней назад. cookie удаляется |
| now | настоящий момент |
| +Xm | X месяцев с настоящего момента |
| +Xy | X дней с настоящего момента |
|
Или можно указать конкретную дату. |
Следующий скрипт при первом входе пользователя спрашивает его имя, а при последующих уже приветствует его, обращаясь по этому имени. Комментировать считаем излишним.
#!c:\perl\bin\perl.exe
use CGI;
$cgi_obj=new CGI;
$UserNameCookie=$cgi_obj->cookie('UserName');
$UserNameParam=$cgi_obj->param('UserName');
if (!$UserNameParam){$UserNameParam=$UserNameCookie};
if (!$UserNameParam){
print $cgi_obj->header();
print $cgi_obj->start_html()
print $cgi_obj->startform();
print $cgi_obj->startform(-method=>'GET');
print $cgi_obj->textfield(-name=>'Username',
-size=>20);
print "\n";
print $cgi_obj->submit(-name=>'submit',
-value=>'ok');
print $cgi_obj->endform;
print $cgi_obj->end_html;
}
else {
$cookie=$cgi_obj->cookie(-name=>'UserName', -value=>$UserNameParam,-expires=>'+30d');
print $cgi_obj->header(-cookie=>$cookie);
print $cgi_obj->start_html();
if (!$UserNameCookie){
print "hello, $UserNameParam";
}
else {
print "hello again, $UserNameParam";
}
print $cgi_obj->end_html;
}