我正在尝试使用cgi :: session,但还没有运气。 index.html具有获取用户凭据的表单,将它们与mysql数据库值匹配,如果正确,则设置会话,否则显示login.html
# create a new session
my $session = CGI::Session->new() or die CGI::Session->errstr;
print $session->header();
#setting session to expire in 1 hour
$session->expire("+1h");
$session->flush();
#further in page
# logout option
print "<a href='logout.cgi'>logout </a></br>";
# check option
print "<a href='check.cgi'>check page</a>"
此页面正确显示输出,它会记录会话ID,但是当我点击检查页面链接时,它不会显示会话信息,而且我总是收到“无会话”消息。
# cgi page
my $cgi = CGI->new;
#print $cgi->header();
print $cgi->start_html();
print $cgi->p("hello");
print $cgi->cookie('CGISESSID');
# load session info
my $session = CGI::Session->load() or die CGI::Session->errstr;
print $session->header();
if ($session->is_empty)
{
print $cgi->p("no session");
}
else
{
print $cgi->p("<b>session data loaded</b>");
print $session->name;
print $session->id;
print $session->is_expired;
}
print $cgi->end_html();
这是logout.cgi中的代码
# Delete the session for good:
my $session = CGI::Session->load() or die CGI::Session->errstr;
$session->delete();
$session->flush();
print $session->header(-location=>'http://login.com');
我做错了什么?
为什么我得到两个不同的结果
1. IE9和Firefox显示启动会话ID,但点击check.cgi IE时显示不同的会话ID,Firefox没有显示。
2.两个浏览器都返回session->is_empty
为真。当check.cgi运行时。
当我从命令行模式运行脚本时,它不会显示任何错误。 (返回语法确定)我试图从cookie和param中检索会话信息但是还没有运气。
注意:不要使用像舞者,催化剂等框架来保持简单的目的