Xpoint
   [напомнить пароль]

стереть cookie

Метки: [без меток]
2007-10-03 16:35:56 [обр] toxa[досье]

пишу:
my $c = new CGI::Cookie(-name => 'usersid',
                        -value => $UserSID,
                        -path => $cookiepath,
                        -expires => '-1d');
print "Set-Cookie: $c\n";

запускаю скрипт под firefox - кука убивается.
запускаю его же под IE - кука остается. Если запустить сразу же повторно под IE - кука сотрется.

А если написать сразу:
my $c = new CGI::Cookie(-name => 'usersid',
                        -value => $UserSID,
                        -path => $cookiepath,
                        -expires => '-1d');
print "Set-Cookie: $c\n";
print "Set-Cookie: $c\n";

то кука стирается сразу и под IE и под FF.
Я чего-то недопонимаю, почему такая фигня может происходить? В принципе и фиг бы с ним, но вдруг я на какие-то грабли наступил и не заметил. =
Заранее спасибо.

спустя 17 часов [обр] Михаил(0/17)[досье]
print "Set-Cookie: $c\n\n";
спустя 2 часа 36 минут [обр] Роман Чемисов(56/327)[досье]
Михаил[досье]
А если должны быть другие заголовки после этого?
спустя 1 минуту [обр] Роман Чемисов(56/327)[досье]

toxa[досье]
А если сделать как в учебнике:

        print header(-type=>'image/gif',
                             -nph=>1,
                             -status=>'402 Payment required',
                             -expires=>'+3d',
                             -cookie=>$cookie,
                             -charset=>'utf-7',
                             -attachment=>'foo.gif',
                             -Cost=>'$2.00');

?

спустя 5 часов [обр] Алексей Севрюков(198/1280)[досье]
сообщение промодерировано

toxa[досье] для начала бы неплохо приводить полный примеры для проверки. Во первых запустите это:

#!/usr/bin/perl

use strict;
use CGI::Cookie;

my $c = new CGI::Cookie(-name=>'usersid',-value=>"TEST",-expires => '+1d');
print "Content-type: text/html\n\n";
print "Cookie: $c\n";

через любой и браузеров и скажите что появилось.
Во-вторых, покажите значения переменных $UserSID и $cookiepath.
Ну, и, в-третьих, почему в поле expires Вы пишите -1d, чтобы кука действовала до вчерашнего дня? Как Вы себе это представляете?
P.S. В четвертых - а чего конкретно Вы хотите добиться?

спустя 1 минуту [обр] Алексей Севрюков(198/1280)[досье]
М Михаил[досье] Прежде чем сказать - подумайте. Этот форум называется "основы" потому, что приходится давать пояснения к своему коду когда Вы отвечаете.
спустя 17 минут [обр] Dennis F. Latypoff aka funky_dennis(24/78)[досье]
my $c = new CGI::Cookie(-name    =>  'usersid',
                        -value   =>  $UserSID,
                        -path    =>  $cookiepath,
                        -expires =>  '-1d');
print "Content-Type: text/html\n";
print "Set-Cookie: $c\n\n";

точно не забыли вывести Content-Type?

Алексей Севрюков[досье]
механизм удаления куки на клиенте подразумевает под собой установку expires в текущий момент времени или в прошлое время. больше куку удалить никак...

спустя 7 часов [обр] Алексей Севрюков(198/1280)[досье]
прошу прощения... я почему то решил что не получается поставить куку.
спустя 13 часов [обр] toxa[досье]

Алексей Севрюков[досье]

Запустил Ваш код,
#!/usr/bin/perl -w

use strict;
use CGI::Cookie;

my $c = new CGI::Cookie(-name=>'usersid',-value=>"TEST",-expires => '+1d');
print "Content-type: text/html\n";
print "Cookie: $c\n";

print "\n\n";
print "Cookie: $c\n";
получилось в броузере (IE и FF) :
Cookie: usersid=TEST; path=/; expires=Sat, 06-Oct-2007 11:13:40 GMT

кука не поставилась в обоих случаях (IE и FF).

Еще раз мой код, чтобы не было мороки с переменными:
my $c = new CGI::Cookie(-name => 'usersid',
                        -value => '',
                        -path => '/',
                        -expires => '-1d');
print "Set-Cookie: $c\n";
print "Content-type: text/html\n\n";
print "передано в куку: $с<br>";

результат: передано в куку: usersid=; path=/; expires=Thu, 04-Oct-2007 11:18:22 GMT

Я хочу стереть куку за одну осознанную команду, а не методом тыка.

Dennis F. Latypoff aka funky_dennis[досье]
а обязательно ли выводить перед установкой кук
print "Content-type: text/html\n";
это вроде CGI::Cookie сам делает?

спустя 22 минуты [обр] Dennis F. Latypoff aka funky_dennis(24/78)[досье]
toxa[досье]
CGI::Cookie сам ничего не делает, только форматирует строку
usersid=; path=/; expires=Thu, 04-Oct-2007 11:18:22 GMT
для того, чтобы вы потом её напечатали с помощью
print "Set-Cookie: $c\n"t
Powered by POEM™ Engine Copyright © 2002-2005