2017-02-21 11 views
0

Я использую CGI :: Cookie для своих сеансовых файлов cookie. Я хочу вернуть ошибку, если файл cookie отсутствует или истек. То, что у меня есть, не работает. Есть идеи??cgi :: cookies Нужно вернуть ошибку

my %cookies = CGI::Cookie->fetch; 
my $cookieID = $cookies{$session_key}->value || error("Your session has ended. Please logon again"); 
+3

«не работает» недостаточно. Что делает этот код и что он ожидает от него? – mob

+0

При использовании отладки я получаю следующее: Не могу вызывать метод «значение» на неопределенное значение в ... В противном случае, как указано, я хотел бы вернуть свою страницу с ошибкой: Ваша сессия закончилась ... –

+0

Вы не используя «cgi :: cookie». Ваш код ясно показывает, что вы используете «CGI :: Cookie». Такая информация важна. Если вы не можете потрудиться, чтобы получить такую ​​информацию, то почему кто-то тратит время, чтобы помочь вам? Кроме того, использование '&' для вызова подпрограммы в Perl не требуется с 1994 года. Откуда вы получаете такой устаревший совет? –

ответ

2

Согласно вашему комментарию, вы должны проверить $cookies{$session_key}.

my $session_id_cookie = $cookies{$session_key} 
    or error("Your session has ended. Please logon again"); 

my $session_id = $session_id_cookie->value(); 
+0

После проверки вашего кода браузер печатает это снова и снова: Content-type: text/html Content-type: text/html Content-type: text/html Content-type: text/html Content-type: text/html Content- type: text/html –

+0

Это вопрос? – ikegami

+0

Нет. Но ваш ответ помог мне исправить это. Благодарю. –

0

Этот код работает:

my %cookies = CGI::Cookie->fetch; 
if ($session_key == $cookies{$session_key}){ } else{ $session_key=""; error("Your session has ended. Please logon again"); exit; } 

Спасибо за помощь.