php和mysql按时发送用户注销

时间:2013-01-06 00:57:10

标签: php mysql

当用户登录时,当他们将其设置恢复为0时,他们的在线状态被设置为1,我试图在网站上一段时间不活动后将其发送到logout.php,所以我在我的users表中设置一个字段作为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字段仅在用户帐户上的某些内容更新后才会更新,也会在用户未注销的一定时间后更新,我不知道原因。

2 个答案:

答案 0 :(得分:4)

来自automatic logout after 15 minutes of inactivity

<?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();
?>

答案 1 :(得分:0)

您的代码恰好位于文件顶部,您必须使用session_start()

启动会话