PHP 会话超时

2022-08-30 10:57:03

当用户登录时,我正在创建一个会话,如下所示:

$_SESSION['id'] = $id;

我如何在该会话中指定X分钟的超时,然后在达到X分钟后让它执行功能或页面重定向?

编辑:我忘了提到我需要会话由于不活动而超时。


答案 1

首先,存储用户上次发出请求的时间

<?php
  $_SESSION['timeout'] = time();
?>

在后续请求中,检查他们多久前发出上一个请求(在本例中为 10 分钟)

<?php
  if ($_SESSION['timeout'] + 10 * 60 < time()) {
     // session timed out
  } else {
     // session ok
  }
?>

答案 2

当会话过期时,数据不再存在,因此类似于

if (!isset($_SESSION['id'])) {
    header("Location: destination.php");
    exit;
}

每当会话不再处于活动状态时,将重定向。

您可以使用session.cookie_lifetime设置会话 Cookie 处于活动状态的时间长度

ini_set("session.cookie_lifetime","3600"); //an hour

编辑:如果您出于安全问题(而不是方便)而对会话进行计时,请使用接受的答案,如下面的评论所示,这是由客户端控制的,因此不安全。我从未认为这是一种安全措施。


推荐