0

当用户登录时,他们的在线状态设置为 1,当他们注销时将其设置回 0,我试图做到这一点,以便在网站上闲置一段时间后,他们将被发送到 logout.php,所以我设置了一个字段在我的用户表中作为 last_activity 作为时间戳。并将此代码作为包含在每个页面上。

<?php
if (!isset($_SESSION['last_activity'])) {
    // initiate value
    $_SESSION['last_activity'] = time();
}
if (time() - $_SESSION['last_activity'] > 500) {
    // last activity is longer then certain amount of time
    header('Location: logout.php');
} else {
    // update last activity timestamp
    $_SESSION['last_activity'] = time();
}
?>

但是现在,正如我所拥有的,last_activity 字段仅在用户帐户上的某些内容被更新时才会更新,而且在用户没有注销并且我不知道为什么的一定时间之后。

4

2 回答 2

4

从不活动 15 分钟后自动注销

<?php
session_start();
$timeout = 10; // Set timeout minutes
$logout_redirect_url = "index.php"; // Set logout URL

$timeout = $timeout * 60; // Converts minutes to seconds
if (isset($_SESSION['start_time'])) {
    $elapsed_time = time() - $_SESSION['start_time'];
    if ($elapsed_time >= $timeout) {
        session_destroy();
        header("Location: $logout_redirect_url");
    }
}
$_SESSION['start_time'] = time();
?>
于 2013-01-06T01:05:28.480 回答
0

您的代码就在文件的顶部,您必须使用 session_start() 开始会话

于 2013-01-06T01:16:19.293 回答