无法检查CGI会话是否已过期

时间:2012-08-10 16:06:05

标签: perl cgi session-state

my $arr;
%cookies = CGI::Cookie->fetch;
for (keys %cookies) {
    $arr = ($cookies{$_});
}

@arr1 = split("=", $arr);
@arr2 = split(";", $arr1[1]);
$cgi_session = CGI::Session->load($arr2[0]);

print "Content-Type: text/html\n\n";

if ($cgi_session->is_expired) {
    print "session expire\n";
}
else {
    print "session valid\n";
}

会话初始化为1分钟后过期但在检查时总是进入其他位置 如果过期了虽然会话实际到期,因为代码在一分钟后不起作用。 我想检查是否已过期以将用户重定向到登录页面。

1 个答案:

答案 0 :(得分:0)

首先,您的代码中没有显示正在设置cookie的内容。目前尚不清楚这是怎么回事。

其次,当您使用CGI :: Session时,应在脚本退出之前调用$cgi_session->flush()

第三,您确定要手动解决所有这些问题,而不是使用Perl的Web框架作为起点吗?