Консультация № 70928
14.01.2007, 19:12
0.00 руб.
0 1 1
Здравствуйте!
Вопрос по CGI-программированию.
Как на Perl удалить существующую Cookie?
Желательно без CGI.pm и т.п.
Спасибо

Обсуждение

Неизвестный
14.01.2007, 19:46
общий
это ответ
Доброе время суток, Олег Владимирович

а чем вас не устроил вариант с CGI ? для начинающих очень даже будет полезно.
если вас не устраивает объём модуля, одиновременно подгружающийся в память, то это отнюдь не повод винить Линкольна - он со своей задачей справился успешно, тут вопрос уже в ваших предубеждениях и интересах разработки.

вернёмся к вопросу ^_^
здесь идея удаления cookie сводится к тому, чтобы СОЗДАТЬ тот же cookie, с тем же параметром, НО С ПУСТЫМ ЗНАЧЕНИЕМ или заведомо ошибочным

вот пример вам:
_________________________________________________
===========================================
для установки используем:
use CGI qw(:standard);
my $cookie = cookie(
-name=>‘fortressa‘,
-value=>‘34857369837986734968793‘
);
print header(-charset=>‘windows-1251‘, -cookie=>$cookie);

===========================================
для удаления пишем вот что -
use CGI qw(:standard);
my $cookie = cookie(
-name=>‘fortressa‘,
-value=>‘‘
);
print header(-charset=>‘windows-1251‘, -cookie=>$cookie);

этим, собственно добиваемся заведомо неверной установки параметра и, в частности, решаем проблему

_________________________________________________
вы хотели вариант без модуля Штейна, вариант будет таким же, но, как договорились, без модуля:

#Значения наших параметров по умолчанию
$param_quan=10;
$param_sort=0;

#Обрабатываем cookies
$cookie_data=$ENV{‘HTTP_COOKIE‘};
@c=split (‘; ‘,$cookie_data);
foreach $itm(@c){
($c_n,$c_v)=split(‘=‘, $itm);
$COOKIE{$c_n}=$c_v;
};

#Если параметры установлены в cookie, они "переписывают"
#значения по умолчанию
if (defined ($COOKIE{‘quan‘})){$param_quan=$COOKIE{‘quan‘};};
if (defined ($COOKIE{‘sort‘})){$param_sort=$COOKIE{‘sort‘};};

вот исход к последнему решению "БЕЗ CGI"
http://www.cgi-scripts.info/perl/cookies.shtml

с уважением, удачи
Форма ответа