perl cgi会话信息未在新页面上返回

时间:2013-08-22 00:09:39

标签: perl cgi session-management

我正在尝试使用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中检索会话信息但是还没有运气。

注意:不要使用像舞者,催化剂等框架来保持简单的目的

0 个答案:

没有答案