gpt4 book ai didi

php - 当 PHP 中没有事件时 session 过期

转载 作者:可可西里 更新时间:2023-10-31 22:44:03 26 4
gpt4 key购买 nike

我在 Internet 上找到了很多关于在一定时间后(例如 30 分钟左右)使 session 过期的教程,但是我想在没有事件时使 session 过期,引用一个著名的 SO 问题 the solution是直截了当的:

if (isset($_SESSION['LAST_ACTIVITY']) 
&& (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
// last request was more than 30 minutes ago
session_unset(); // unset $_SESSION variable for the run-time
session_destroy(); // destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp

但我是否必须根据每个请求更新 $_SESSION['LAST_ACTIVITY']

预先假定的答案是肯定的,但我有一个包含 200 多个 php 页面的大网站,并且在每次请求时更新 $_SESSION['LAST_ACTIVITY'] 很忙。

还有其他方法吗?所有文件中唯一共同的是一个用于数据库连接的配置文件。

最佳答案

您也可以每分钟仅更新一次(例如)$_SESSION['LAST_ACTIVITY'],但 session 不会在刚好 30 分钟后被销毁。

if (isset($_SESSION["LAST_ACTIVITY"])) {
if (time() - $_SESSION["LAST_ACTIVITY"] > 1800)) {
// last request was more than 30 minutes ago
session_unset(); // unset $_SESSION variable for the run-time
session_destroy(); // destroy session data in storage
} else if (time() - $_SESSION["LAST_ACTIVITY"] > 60) {
$_SESSION["LAST_ACTIVITY"] = time(); // update last activity time stamp
}
}

最简单的方法是将代码放在配置文件中,因为我认为您不想更改所有 200 个 php 文件。

关于php - 当 PHP 中没有事件时 session 过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19215300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com