首页 > 后端开发 > php教程 > 如何使 PHP 会话在 30 分钟不活动后过期?

如何使 PHP 会话在 30 分钟不活动后过期?

DDD
发布: 2024-12-20 03:29:13
原创
245 人浏览过

How to Make a PHP Session Expire After 30 Minutes of Inactivity?

PHP 会话在 30 分钟后过期

问题:
如何创建一个 PHP 会话30 后过期分钟?

答案:

方法:实现自定义会话超时

PHP 内置的会话超时方法,如session.gc_maxlifetime 和 session.cookie_lifetime 由于各种因素并不可靠。相反,使用以下方法实现您自己的超时:

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
  session_unset();
  session_destroy();
}
$_SESSION['LAST_ACTIVITY'] = time();
登录后复制

此代码会更新每个请求的会话时间戳,保持会话文件处于活动状态并防止垃圾收集器过早删除。

额外的安全性:

为了防止会话劫持,请重新生成会话 ID定期:

if (!isset($_SESSION['CREATED'])) {
  $_SESSION['CREATED'] = time();
} else if (time() - $_SESSION['CREATED'] > 1800) {
  session_regenerate_id(true);
  $_SESSION['CREATED'] = time();
}
登录后复制

注释:

  • 将 session.gc_maxlifetime 设置为至少等于自定义超时(本例中为 1800)。
  • 要在活动 30 分钟后使会话过期,请使用过期时间为 time() 的 setcookie 60*30。

以上是如何使 PHP 会话在 30 分钟不活动后过期?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板