gpt4 book ai didi

PHP session 不会在每次请求时延长 Cookie 过期时间

转载 作者:可可西里 更新时间:2023-10-31 22:13:02 25 4
gpt4 key购买 nike

session_start() 是否应该通过 session.gc_maxlifetime 变量来延长 session ID cookie 的生命周期?

我的 session.gc_maxlifetime 是 24 分钟,无论站点上是否有其他事件,每个 session 都只存在 24 分钟。我得到我的 session ,刷新页面,过期时间没有改变。这会导致登录 24 分钟后注销,无论如何。我的配置有问题吗?

最佳答案

我也有这个问题。我在想每个

session_set_cookie_params($sessionTime, '/', $domain);
session_start();

导致 cookie PHPSESSID 的过期时间延长。但实际上 cookie PHPSESSID 仅在生成新 session ID 时首次在 session 中由 session_start() 设置。

我的目标是每次打开页面时 session 过期时间都应该重新生成。我发现 session 可能过期有两个原因:

  1. Cookie PHPSESSID 过期,其过期时间不会被session_start() 重新生成,因此session 会一直过期,因为cookie 有过期时间。
  2. 用户的任何事件都不会导致 session 在服务器端过期。它由 ini_set('session.gc_maxlifetime', $sessionTime) 设置。

这种情况下的解决方案是当你不设置 cookie 的过期时间,但 session.gc_maxlifetime 仍然设置:

function my_session_start($maxtime = 300)
{
ini_set('session.gc_maxlifetime', $maxtime);
session_set_cookie_params(0, '/', "." . $domain);
session_start();
}

最重要的是 session_set_cookie_params(0, '/', ".. $domain) 中的 0 然后 cookie 不会过期并且不需要扩展它的到期时间。当浏览器关闭时,该 cookie 将被删除。然后我们仅受服务器端过期时间的限制。

我还遇到了无法通过 jQuery Ajax PING 延长 PHP session 时间的问题,因为我在 cookie 中为 PHPSESSID 设置了过期时间。 0 解决了 session 未预期结束的所有问题。对不起我的英语不好。祝你好运。

关于PHP session 不会在每次请求时延长 Cookie 过期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3791667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com