1
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 分钟后过期,但在检查是否过期时它总是进入 else。虽然会话实际上会过期,因为代码在一分钟后不起作用。我想检查是否过期将用户重定向到登录页面。

4

1 回答 1

0

首先,您的代码中没有任何内容显示正在设置 cookie。目前尚不清楚这是如何发生的。

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

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

于 2012-08-11T04:01:33.170 回答