В общем, есть CGI скрипт, в нем устанавливаю кукис.
Кука ставится, т.к. вывод
use CGI::Cookie; &auth::set_cookie($login, $session); print $ENV{HTTP_COOKIE};
Set-Cookie: admin=4e8a9aa0f706259cda20f2e3f2fc4168; path=/; expires=Sun, 21-Sep-2008 06:31:50 GMT
При этом системное время:
$ date
Вск Сен 21 17:30:36 VLAST 2008
т.е. время истекает в прошлом ?
как пофиксить?))

Поправочка..
print $ENV{'HTTP_COOKIE'};вообще ничего не выводит, а строчка:
Set-Cookie: admin=4e8a9aa0f706259cda20f2e3f2fc4168; path=/; expires=Sun, 21-Sep-2008 06:31:50 GMT
выводится когда устанавливаю кукис:
Раньше $ENV{'HTTP_COOKIE'}, выводило все.. Браузер Opera, включил принимать все cookie.
------------------
Если не делать
Если не делать -expires, тогда время показывает:
path=/ Date: Sun, 21 Sep 2008 07:38:03 GMT Content-Type: text/html; charset=-8
следовательно время оно правильно выставляет (expires), только вот начальное время неправильно оно берет, это баг или я туплю гдето?)
------------------
Это можно
Это можно объяснить тем, что в теле функции set_cookie не хватает одной запятой.
было бы хорошеПосле устранения ошибки все работает. А вот где именно ее не хватает уж потрудитесь найти.
И пожалйста, оформляйте в следующий раз код, который выкладываете на обозрение,
таким образом, чтобы его можно было не утруждаясь запустить.
Например
Уж простите мне колкость, но я потратил 20 минут на то чтобы вспомнить/прочитать что и куда нужно подгружать,
т.к. не использую в работе CGI...
Спасибо
Спасибо огромное за пример, обещаю впредь оформлять хорошо, чтобы было понятно =)
По теме, то проблема была видимо в том что после создания куки я делаю редирект на другую страницу:
Вот в таком случае кукис не сохраняется, почему-то.
Не сталкивался
Не сталкивался проблемой куки/редирект - всегда все работало.
Возможно проблема заключается в пустых переменных $login, $session.
Пробуйте журналировать вывод header()
В таком виде работает с хромом и фф
Quote: Возможно
эти переменные не пустаные. просто у меня есть auth.pm в нем:
А из файла index.cgi я вызываю функцию так:
В таком случае кукисы не устанавливаются почему-то. Хотя другие функции из auth.pm выполняются..
Как я гооврил
Как я гооврил выше, журналируйте рузельтат выполнения header()
Я проверил этлот пример, он работает, браузер кушает печенье.
Проблема в том,
Проблема в том, как оказалось, что в начале файла у меня.
print "Content-Type: text/html; charset=UTF-8;\n\n";если закоментить, т.е. один раз в файле вызывать заголовок:
print header(-charset => 'utf-8', -cookie=>$cookie);тогда оно будет ставить куки.
Как быть в таком случае ?
Эээээ..... fu7ur3...
Эээээ..... fu7ur3... тут уж нужно выбирать что-то одно.
Либо ты отдаешь управление хидерами CGI.pm, либо возишься с ними сам.
последовательность "\n\n" обозначает конец хидеров и начало самого файла.
т.е. в приведеном случае весь хидер, который отдает CGI.pm (и печенюшки в том числе)
скорее всего интерпритируются как текст, просто не отображаются браузером.
Как бы то нибыло, проблемму нужно рассматривать глобально.
Для этого я бы порекомендовал либо перенаправить (журналирвать) _весь_ вывод на STDOUT
Либо воспользоватся wget --save-headers http://localhost/script.cgi
Для себя я предпочитаю последнее.
так намного проще выяснить, что же не нравится браузеру в предложенном блюде.
По стандарту
По стандарту HTTP,
"\n\n"означает конец хидеров, естественно, все что идет далее, уже будет обрабатываться как контент.
Поэтому вообще стоит читать тексты стандартов, или полагаться _полностью_ на чужой код в готовых библиотеках.