首页 > 解决方案 > 如何正确管理 PHP 会话 cookie 过期?

问题描述

PHP 网站使用 cookie 在浏览器端存储会话 ID。目标是 PHP 会话将在最近的用户与站点交互后的特定时间内被视为有效。

PHP 会话有两个不同的超时:

PHP 内置逻辑仅在第一次session_start()调用 cookie 时发送 cookie,即生成会话 id。cookie 不会在进一步的请求中发送,因此 cookie 的过期时间永远不会延长。

与此相反,PHP 会话过期在每个请求上都会延长。

因此,如果用户不断地与站点交互,PHP 会话过期时间将被延长,但 cookie 过期时间保持其原始值。

例子:

时间点/PHP 会话过期/cookie 过期

1 / 6 / 6

2 / 7 / 6

4 / 9 / 6

如何强制 PHP 在每个(或几乎每个)请求上更新 cookie 的过期时间?最佳实践是什么?

我没有在网上找到任何有用的东西,也没有找到任何可行的解决方法。例如,我发现了以下建议:

注意:这个问题中的会话是指由 PHP 管理的会话,而不是浏览器。cookie 过期时间应该独立于浏览器会话。因此,该建议Is possible to keep session even after the browser is closed?根本不相关。

编辑:该问题已被归类为PHP 错误

标签: phpsessioncookiessession-cookies

解决方案


推荐阅读