我正在编写一个需要使用模块CGI :: Session ver 4.35 的Web应用程序.从客户端收到带有SESSIONID字符串的请求
$sid = $cgi->cookie("CGISESSID") || $cgi->param("CGISESSID") || undef;
Run Code Online (Sandbox Code Playgroud)
它尝试通过传递$ sid作为参数来重新创建会话
$session = new CGI::Session($sid) or ($logger->error(CGI::Session->errstr) and die);
Run Code Online (Sandbox Code Playgroud)
如果有与SID创建一个会话,$session->id并且$sid被假定是相同的,但事实是这是不是.
这是我创建一个全新会话的语句
$session = new CGI::Session("id:md5", undef, {Directory=>$SESSION_DIR})
or ($logger->error(CGI::Session->errstr) and die);
Run Code Online (Sandbox Code Playgroud)
这里出了什么问题?我该如何正确使用模块CGI :: Session?
我是CGI :: Session的维护者.我建议在所有情况下以相同的方式创建会话,如下所示:
$session = CGI::Session->new("id:md5", $cgi, {Directory=>$SESSION_DIR});
Run Code Online (Sandbox Code Playgroud)
这遵循new()文档中的推荐语法.我还建议您确保在脚本末尾附近显式调用flush().其原因在此解释得更多:
http://metacpan.org/pod/CGI::Session#A-Warning-about-Auto-flushing
| 归档时间: |
|
| 查看次数: |
2640 次 |
| 最近记录: |