Признать недействительными выбранные куки Perl - PullRequest
0 голосов
/ 11 марта 2012

У меня есть следующий скрипт на Perl.
Мне нужно, чтобы аннулировать все куки, которые не находятся в хеше validCookies. Обратите внимание, что это только верхняя часть моего кода, остальное касается печати всех файлов cookie в @cookieArray(), и это работает для меня.
Так как правильные куки-файлы устанавливаются, я должен установить их позже в коде. Код банкомата не делает файлы cookie недействительными, кто-нибудь знает, почему?

use CGI qw(:standard);
use CGI::Cookie;    


@cookieArray = ();

#hash of cookie names that should not be set to null
%validCookies = ( cName=> 0, cAddress => 0, cCity => 0, cProvince => 0, cPostalCode => 0, cMail => 0, cDate => 0);

%cook = CGI::Cookie->fetch;
foreach $name ($cook){
 if(exists ($validCookies{$name})){

 } else {
   $temp = CGI::Cookie->new(-name=>$name, -value =>"");
   push(@cookieArray, $temp);
 }
}

1 Ответ

3 голосов
/ 11 марта 2012

Чтобы сделать куки недействительными, вы должны просрочить их. Срок действия следующего кода истекает, кроме имен защищенных файлов cookie.

Нет необходимости использовать низкоуровневый интерфейс CGI :: Cookie. Все функциональные возможности уже доступны с помощью метода cookie.

use strict;
use warnings FATAL => 'all';
use CGI qw();
use Data::Dumper qw(Dumper);

my %protected_names = map { $_ => undef }
    qw(cName cAddress cCity cProvince cPostalCode cMail cDate);

my $cgi = CGI->new;
print $cgi->header(
    -type => 'text/plain',
    -cookie => [
        map {
            $cgi->cookie(
                -name => $_,
                -value => (exists($protected_names{$_})
                    ? $cgi->cookie($_)
                    : q()
                ),
            )
        } $cgi->cookie
    ],
);
print Dumper [$cgi->cookie];
...