成功登录后,我在www.example.com cgi文件中设置会话变量login.pl。
use CGI::Session qw();
my $session = CGI::Session->new;
$session->param(User_id => '12345');
我想访问另一个perl cgi文件中的同一个User_id,比如checkout.pl。
use CGI::Session qw();
print $session->param('User_id');
但无法访问这里的值。有人能帮我,在找出什么是错误的这里。您的帮助是非常感谢。
德韦什
1条答案
按热度按时间mefy6pfw1#
您需要在第二个请求中重新初始化会话以使用它:如果没有这个初始化,Perl将无法“猜测"
$session
的含义。当用户点击另一个链接或者过一会儿再次访问站点时,我们是否应该再次创建一个新的会话?绝对不应该。这将破坏状态维护的全部目的。由于我们已经将id作为cookie发送,我们所需要的只是在创建会话对象时将该id作为seconds参数传递:
上面的语法首先会尝试初始化一个已经存在的会话数据,如果失败(如果会话不存在)则创建一个新的会话:但如果用户不支持cookie呢?在这种情况下,我们需要将会话ID作为查询字符串附加到所有的url中,并在cookie之外查找它们:
假设您手边有CGI对象,您可以将上面的两行最小化为一行: