当用户登录时,当他们将其设置恢复为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字段仅在用户帐户上的某些内容更新后才会更新,也会在用户未注销的一定时间后更新,我不知道原因。
答案 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()
启动会话