PHP:重新加载时重置会话生命周期
PHP: Reset session lifetime on reload
这可能是一个相当简单的问题。我已经找到了几十个类似的,询问如何在 PHP 中普遍缩短或延长会话生命周期。我知道如何实现,我的 PHP 脚本是这样写的:
ini_set('session.gc_maxlifetime', 3600);
session_set_cookie_params(3600);
session_start();
这将我的会话设置为在 3600 秒后超时。这基本上就是发生的事情,当我最初打开一个我必须登录的网站时,我可以使用它整整一个小时,然后所有会话数据都被删除,我需要重新登录。
但是,这不是我所期望的行为。我希望我的会话在 不活动 一小时后超时。因此,当我在 10:00 am 第一次打开我的网站时,做一些事情直到 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);
它将在每次执行时更新会话 cookie 到期日期,直到 time()+$lifetime
日期
$lifetime=3600;
session_start();
setcookie(session_name(),session_id(),time()+$lifetime);
使用此代码发送了两个同名的 cookie,似乎不适合使用。
如果您不想两次发送同名的会话cookie,您可以以最干净的方式使用这段代码。
$sessionId = $_COOKIE[session_name()] ?? null;
if($sessionId){ session_id($sessionId); }
session_start(['cookie_lifetime' => 3600]);
每次请求都会更新会话持续时间。
这可能是一个相当简单的问题。我已经找到了几十个类似的,询问如何在 PHP 中普遍缩短或延长会话生命周期。我知道如何实现,我的 PHP 脚本是这样写的:
ini_set('session.gc_maxlifetime', 3600);
session_set_cookie_params(3600);
session_start();
这将我的会话设置为在 3600 秒后超时。这基本上就是发生的事情,当我最初打开一个我必须登录的网站时,我可以使用它整整一个小时,然后所有会话数据都被删除,我需要重新登录。
但是,这不是我所期望的行为。我希望我的会话在 不活动 一小时后超时。因此,当我在 10:00 am 第一次打开我的网站时,做一些事情直到 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);
它将在每次执行时更新会话 cookie 到期日期,直到 time()+$lifetime
日期
$lifetime=3600;
session_start();
setcookie(session_name(),session_id(),time()+$lifetime);
使用此代码发送了两个同名的 cookie,似乎不适合使用。
如果您不想两次发送同名的会话cookie,您可以以最干净的方式使用这段代码。
$sessionId = $_COOKIE[session_name()] ?? null;
if($sessionId){ session_id($sessionId); }
session_start(['cookie_lifetime' => 3600]);
每次请求都会更新会话持续时间。