判断 PHP session 是否过期可以通过比较当前时间和上次活动时间的差值与 session.gc_maxlifetime 的大小来判断。
以下是示例代码:
// 启动 session
session_start();
// 判断是否已经登录
if(isset($_SESSION["username"])) {
// 获取上次活动时间
$lastActiveTime = isset($_SESSION["lastActiveTime"]) ? $_SESSION["lastActiveTime"] : time();
// 判断是否超时
if(time() - $lastActiveTime > ini_get("session.gc_maxlifetime")) {
// session 已过期,销毁 session
session_destroy();
echo "Session 已过期";
exit();
}
// 更新上次活动时间
$_SESSION["lastActiveTime"] = time();
// 用户已登录,执行其他操作
echo "欢迎您," . $_SESSION["username"];
}
else {
// 用户未登录,跳转到登录页面
header("Location: login.php");
exit();
}
在上面的代码中,通过判断 $_SESSION["lastActiveTime"] 与当前时间的差值是否大于 session.gc_maxlifetime,来判断 session 是否已经过期。如果过期,销毁 session 并提示用户。否则,更新 $_SESSION["lastActiveTime"] 的值,继续执行其他操作。