sách gpt4 ai đã đi

Perl CGI 持久性 cookie

In lại 作者:行者123 更新时间:2023-12-01 06:29:12 31 4
mua khóa gpt4 Nike

我希望用户即使关闭浏览器也不必登录。我的 cookie 将在一个月后过期。

用户登录成功

 $session = CGI::Session->new (undef, undef, {Directory=>'tmp/'})
or die CGI::Session->errstr;
$session->param('username', $username);
$session->expire('+1M');
$cookie = $cgi->cookie( -name=>$session->name, -value=>$session->id );
print $cgi->header(-cookie=>$cookie );

然后他们将被重定向到另一个页面,只要他们不关闭浏览器就可以访问该页面。这是第二页中的代码:

my $cookie = $cgi->cookie('CGISESSID');
if ($cookie){
print $cgi->header(-cookie => $cookie);
else{
//ask them to relog in
}

我可以看到在 tmp/中创建的 session 。如何在浏览器关闭后加载现有的 cookie。我如何知道根据用户/浏览器加载哪个 session ?

1 Câu trả lời

只要您在 cookie 上设置了 future 的到期日期,即使在用户重新启动浏览器后它们也应该持续存在(当然,只要他们在该日期之前重新启动)。要加载 cookie,请执行您正在做的事情:

my $cookie = $cgi->cookie('CGISESSID');

要尝试使用 cookie 加载现有 session ,您只需将 CGI 对象传递给 CGI::Session 的 mới 方法即可:

my $session = new CGI::Session(undef, $cgi, {Directory=>"/tmp"});

这将尝试使用随 CGI 请求传入的 cookie 来初始化现有 session ;如果不存在,它将创建一个新 session 。请注意,这假定 cookie 名称是 CGISESSID。要使用另一个名称,请运行:

CGI::Session->name("MY_SID");
# hoặc
$session->name("MY_SID");

$session = new CGI::Session(undef, $cgi, {Directory=>'/tmp'});

如果您还没有,我建议您阅读 CGI::Session tutorial .


biên tập: session 设置为一个月后到期

$session->expire('+1M');

但 cookie 不是。如果您没有为 cookie 设置过期时间,浏览器会将其存储在内存中而不是磁盘上;一旦您关闭浏览器,cookie 就会消失。要设置 cookie 过期时间,请执行以下操作

$cookie = $cgi->cookie( -name=>$session->name, -value=>$session->id, -expires=>'+1M' );

关于Perl CGI 持久性 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19011419/

31 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com