如果用户在一段时间内未处于活动状态,则自动注销该用户

时间:2017-01-06 06:08:00

标签: php session

如果用户未激活,我希望用户在30分钟后自动注销。

我尝试过以下代码:
Index.php:

<?  
if ((time() - $_SESSION['last_activity']) > 1800) // 30* 60 = 1800
{  
   header("Location: logout.php");  
}  
?>

login.php:

<?  
        $_SESSION['unm'] = $row['u_unm'];
        $_SESSION['uid'] = $row['u_pwd'];
        $_SESSION['status'] = true;
        $_SESSION['last_activity'] = time();  
?>  

我的问题是我不明白这段代码是如何跟踪用户活动的?

我面临的问题是确定用户是否处于活动状态。但我希望用户只有在没有做任何事情时才能退出。

有人能告诉我如何跟踪吗?感谢。

1 个答案:

答案 0 :(得分:2)

看起来你只有index.php。尝试修改你的代码:

<?  
if ((time() - $_SESSION['last_activity']) > 1800) // 30* 60 = 1800
{  
   header("Location: logout.php");  
} else {
   $_SESSION['last_activity'] = time();
}
?>

如果用户在30分钟内完成了某项操作,则只会更新您的会话。

好像你没有使用图书馆,所以你可能需要在你拥有的每个网站上实现这一点。

修改

创建一个新文件,可以命名为lifesaver.php或类似的东西。在此文件中,您粘贴上面的代码。

现在,您将其包含在您拥有的每个页面上,例如:require('lifesaver.php');

这将包含您的文件,并且您的网站上有以上代码。

解释上述代码如何工作:

  

编辑:基本上会在30分钟或更长时间内重新加载页面,您将自动转到logout.php。如果您在30分钟之后重新加载页面,您的时间将会更新(意味着再过30分钟直到自动注销)。每次用户重新加载或使用此脚本转到页面时,都会执行代码。 - Antono