PHP:重新加载时重置 session 生命周期

标签 php session session-timeout

这可能是一个相当简单的问题。我发现了很多类似的问题,询问如何在 PHP 中通常缩短或延长 session 生命周期。我知道如何实现,我的 PHP 脚本是这样的:

ini_set('session.gc_maxlifetime', 3600);
session_set_cookie_params(3600);
session_start();

这将我的 session 设置为在 3600 秒后超时。这基本上就是发生的情况,当我最初打开一个我必须登录的网站时,我可以使用它整整一个小时,然后所有 session 数据都被删除,我需要重新登录。

但是,这不是我所期望的行为。我希望我的 session 在不活动一小时后超时。所以当我在上午 10:00 第一次打开我的网站时,做一些事情直到 10:45,然后它应该在 11:45 超时,而不是像现在这样在 11:00 超时。

有什么建议可以实现吗?

最佳答案

使用代替 session_set_cookie_params -> setcookie

代替

session_set_cookie_params(3600);
session_start();

使用它并在您网站的每个页面上调用它

$lifetime=3600;
session_start();
setcookie(session_name(),session_id(),time()+$lifetime);

它将在每次执行时更新 session cookie 到期日期,直到 time()+$lifetime 日期

关于PHP:重新加载时重置 session 生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34252474/

相关文章:

php - 将 html 实体转换为 UTF-8,但保留现有的 UTF-8

php - 正则表达式匹配所有内容,直到它达到大写

php - 在 php 中强制重新缓存 WSDL

grails - 如何通过Grails代码获取 session 超时值

ruby-on-rails - 部署后设计丢失 session

php - 什么是更好的设计?

session - 如何在 webhook 上获取 session ID

javascript - 查询字符串参数

laravel - 如何在中间件中使用 session 来始终检查用户是否登录

php - 使用Xampp,php的 session 超时不起作用