Страница 1 из 2

Perl и Cookies, требуется помощь!

Добавлено: 19 фев 2004, 10:03
vlanis
#!/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
куки в месте высадки не обнаружено!

cookie

Добавлено: 19 фев 2004, 10:16
Deady
попробуй так:

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

Re: cookie

Добавлено: 19 фев 2004, 10:32
vlanis
[quote="Deady"]попробуй так:

use CGI qw/:standart/]

-------------------------------------------------------------------------
В моем конкретном случае expires будет равен нулю, так как кука будет существовать только при открытом окне браузера.

use CGI qw/:standart/; при таком подключении модуля не работает header. Но даже если заменить все это на use CGI qw/:all/;
все равно куки нету. А в браузере видим тот же html код, смотри выше!

Re: cookie

Добавлено: 19 фев 2004, 10:36
Deady
vlanis писал(а): В моем конкретном случае expires будет равен нулю, так как кука будет существовать только при открытом окне браузера.
тогда expires вообще не надо указывать - он в таком режиме по умолчанию работает.

я пример взял из книги "практика применения perl, php, apache и mysql для активных web-сайтов". то что там написано, по идее должно быть правильно.

Re: cookie

Добавлено: 19 фев 2004, 11:51
vlanis
Deady писал(а):
vlanis писал(а): В моем конкретном случае expires будет равен нулю, так как кука будет существовать только при открытом окне браузера.
тогда expires вообще не надо указывать - он в таком режиме по умолчанию работает.

я пример взял из книги "практика применения perl, php, apache и mysql для активных web-сайтов". то что там написано, по идее должно быть правильно.
может у меня чтото с софтом? кто ответственнен за отправку куки клиенту? это апач или perl?

Perl & Cookie

Добавлено: 19 фев 2004, 12:12
chur
Убери из функции cookie параметр -domain.

Re: Perl & Cookie

Добавлено: 19 фев 2004, 12:25
vlanis
chur писал(а):Убери из функции cookie параметр -domain.
Вот что происходит: я уберал все что только можно. При тестировании скрипта perlом на выходе получаем:
________________________________________________
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>
________________________________________________

может что с апачем?

Добавлено: 19 фев 2004, 13:39
AiK
vlanis, если ты в 12-ть дня ставишь куку на 9-ть того же дня, то кука у тебя не сохранится. А в браузере заголовки ты и не должен видеть.

Perl & Cookie

Добавлено: 19 фев 2004, 14:51
chur
vlanis, в HTML странице куки не видны (если их специально туда не поместить).

Добавлено: 19 фев 2004, 14:56
vlanis
AiK писал(а):vlanis, если ты в 12-ть дня ставишь куку на 9-ть того же дня, то кука у тебя не сохранится. А в браузере заголовки ты и не должен видеть.
big thanx AiK!
вот оказывается где собака порылась.
На сколько я понял после даты и времени GMT это время по гринвичу. По этому она и не создается! если делаешь +10h любой из скриптов,написаных выше работоспособен. Вот в этом и была проблема.
А как я уже понял в дальнейшем разборе кука с временем жизни 0 храниться в памяти браузера (типа cookie-bufer) и не помещается в хранилище кук на жестком.
Всем огромное спасибо за своевременную помощь!