使用 PHP 时,您可能会遇到需要调整默认会话超时设置的情况。虽然 php.ini 修改提供了一个解决方案,但对该文件的有限访问可能会提示您寻求替代方法。
为了对会话不活动强制执行严格的上限,我们可以实现在会话数据中存储此绑定的自定义逻辑:
session_start(); $now = time(); if (isset($_SESSION['discard_after']) && $now > $_SESSION['discard_after']) { // Session has expired, destroy and start a new one session_unset(); session_destroy(); session_start(); } // Set expiration time for both new and existing sessions $_SESSION['discard_after'] = $now + 3600;
如果不需要施加严格的限制,您可以依靠特定的 PHP 配置参数来建立下限:
// Server retains session data for at least 1 hour ini_set('session.gc_maxlifetime', 3600); // Clients retain session ID for exactly 1 hour session_set_cookie_params(3600); session_start();
这种方法指示服务器存储会话数据的最小时间一小时,客户在相同的持续时间后丢弃他们的会话 ID。
施加会话时超时,解决客户端和服务器端设置至关重要。为了获得最大程度的控制和可预测性,请将严格的上限与 session.gc_maxlifetime 的下限结合起来。但是,请注意,会话 ID 保存可能值得关注,尤其是当其值敏感时。
以上是如何控制 PHP 中的会话超时?的详细内容。更多信息请关注PHP中文网其他相关文章!