PHP 会话超时
当用户登录时,我正在创建一个会话,如下所示:
$_SESSION['id'] = $id;
我如何在该会话中指定X分钟的超时,然后在达到X分钟后让它执行功能或页面重定向?
编辑:我忘了提到我需要会话由于不活动而超时。
当用户登录时,我正在创建一个会话,如下所示:
$_SESSION['id'] = $id;
我如何在该会话中指定X分钟的超时,然后在达到X分钟后让它执行功能或页面重定向?
编辑:我忘了提到我需要会话由于不活动而超时。
首先,存储用户上次发出请求的时间
<?php
$_SESSION['timeout'] = time();
?>
在后续请求中,检查他们多久前发出上一个请求(在本例中为 10 分钟)
<?php
if ($_SESSION['timeout'] + 10 * 60 < time()) {
// session timed out
} else {
// session ok
}
?>
当会话过期时,数据不再存在,因此类似于
if (!isset($_SESSION['id'])) {
header("Location: destination.php");
exit;
}
每当会话不再处于活动状态时,将重定向。
您可以使用session.cookie_lifetime设置会话 Cookie 处于活动状态的时间长度
ini_set("session.cookie_lifetime","3600"); //an hour
编辑:如果您出于安全问题(而不是方便)而对会话进行计时,请使用接受的答案,如下面的评论所示,这是由客户端控制的,因此不安全。我从未认为这是一种安全措施。