Perl и Cookies, требуется помощь!
#!/usr/bin/perl
use CGI;
$query = new CGI;
$cookie = $query->cookie(-name=>'sessionID',
-value=>'xyzzy',
-expires=>'+1h',
-path=>'/cgi-bin',
-domain=>'localhost',
-secure=>0);
print $query->header(-cookie=>$cookie);
___________________________________________________________
Код практически один в один взят из мануала по перлу. Изменил только secure c 1 на 0 и поставил domain localhost.
По какой причине все это может не работать? то есть я запускаю скрипт из браузера и получаю ответ:
___________________________________________________________
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1251"></HEAD>
<BODY></BODY></HTML>
___________________________________________________________
платформа windows сервер apache, perl
куки в месте высадки не обнаружено!
use CGI;
$query = new CGI;
$cookie = $query->cookie(-name=>'sessionID',
-value=>'xyzzy',
-expires=>'+1h',
-path=>'/cgi-bin',
-domain=>'localhost',
-secure=>0);
print $query->header(-cookie=>$cookie);
___________________________________________________________
Код практически один в один взят из мануала по перлу. Изменил только secure c 1 на 0 и поставил domain localhost.
По какой причине все это может не работать? то есть я запускаю скрипт из браузера и получаю ответ:
___________________________________________________________
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1251"></HEAD>
<BODY></BODY></HTML>
___________________________________________________________
платформа windows сервер apache, perl
куки в месте высадки не обнаружено!
с уважением vlanis
попробуй так:
use CGI qw/:standart/;
use CGI::Cookie;
$cookie1 = new CGI::Cookie(-name=>'aaa', -value=>'bbb');
print header(-cookie=>$cookie1);
secure не надо указывать вообще. expires указывай в формате дата_GMT, т.е.
День_недели, ДД-Мес-ГГ ЧЧ:ММ:СС GMT,
например
Mon, 07-Jun-93 14:45:00 GMT
use CGI qw/:standart/;
use CGI::Cookie;
$cookie1 = new CGI::Cookie(-name=>'aaa', -value=>'bbb');
print header(-cookie=>$cookie1);
secure не надо указывать вообще. expires указывай в формате дата_GMT, т.е.
День_недели, ДД-Мес-ГГ ЧЧ:ММ:СС GMT,
например
Mon, 07-Jun-93 14:45:00 GMT
[quote="Deady"]попробуй так:
use CGI qw/:standart/]
-------------------------------------------------------------------------
В моем конкретном случае expires будет равен нулю, так как кука будет существовать только при открытом окне браузера.
use CGI qw/:standart/; при таком подключении модуля не работает header. Но даже если заменить все это на use CGI qw/:all/;
все равно куки нету. А в браузере видим тот же html код, смотри выше!
use CGI qw/:standart/]
-------------------------------------------------------------------------
В моем конкретном случае expires будет равен нулю, так как кука будет существовать только при открытом окне браузера.
use CGI qw/:standart/; при таком подключении модуля не работает header. Но даже если заменить все это на use CGI qw/:all/;
все равно куки нету. А в браузере видим тот же html код, смотри выше!
с уважением vlanis
тогда expires вообще не надо указывать - он в таком режиме по умолчанию работает.vlanis писал(а): В моем конкретном случае expires будет равен нулю, так как кука будет существовать только при открытом окне браузера.
я пример взял из книги "практика применения perl, php, apache и mysql для активных web-сайтов". то что там написано, по идее должно быть правильно.
может у меня чтото с софтом? кто ответственнен за отправку куки клиенту? это апач или perl?Deady писал(а):тогда expires вообще не надо указывать - он в таком режиме по умолчанию работает.vlanis писал(а): В моем конкретном случае expires будет равен нулю, так как кука будет существовать только при открытом окне браузера.
я пример взял из книги "практика применения perl, php, apache и mysql для активных web-сайтов". то что там написано, по идее должно быть правильно.
с уважением vlanis
Убери из функции cookie параметр -domain.
Вот что происходит: я уберал все что только можно. При тестировании скрипта perlом на выходе получаем:chur писал(а):Убери из функции cookie параметр -domain.
________________________________________________
Set-Cookie: sessionID=xyzzy; path=/cgi-bin
Date: Thu, 19 Feb 2004 09:25:00 GMT
Content-Type: text/html; charset=ISO-8859-1
________________________________________________
а после апача в браузере:
________________________________________________
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1251"></HEAD>
<BODY></BODY></HTML>
________________________________________________
может что с апачем?
с уважением vlanis
vlanis, если ты в 12-ть дня ставишь куку на 9-ть того же дня, то кука у тебя не сохранится. А в браузере заголовки ты и не должен видеть.
vlanis, в HTML странице куки не видны (если их специально туда не поместить).
big thanx AiK!AiK писал(а):vlanis, если ты в 12-ть дня ставишь куку на 9-ть того же дня, то кука у тебя не сохранится. А в браузере заголовки ты и не должен видеть.
вот оказывается где собака порылась.
На сколько я понял после даты и времени GMT это время по гринвичу. По этому она и не создается! если делаешь +10h любой из скриптов,написаных выше работоспособен. Вот в этом и была проблема.
А как я уже понял в дальнейшем разборе кука с временем жизни 0 храниться в памяти браузера (типа cookie-bufer) и не помещается в хранилище кук на жестком.
Всем огромное спасибо за своевременную помощь!
с уважением vlanis