PHP在线/离线脚本

时间:2014-05-14 05:10:39

标签: php

我试图编写一个人登录的脚本,并将他的上次登录时间戳更新到表中。如果他已登录超过1小时,即使他正在互动,也要立即将他登出。我想知道我该怎么做?我正在使用time()函数来存储登录时间,如下所示:

$lastlogin = time();

这已标记为重复:Automatic Logout after 15 minutes of inactive in php

但不,这是不同的。我希望自动发生而无需用户刷新页面。该问题的答案只有在用户与网站交互时才会执行,但我希望用户即使用户离开而没有进行交互也会退出。

3 个答案:

答案 0 :(得分:1)

我无法完全理解你的想法,但是给你简单,

这只是简单的php用于检查你登录,这个例子你用户$ _SESSION ['USER']用于检查用户登录并设置在这个会话数组中 在这一套中是:

$_SESSION['user']['THE SESSION KEY FOR LOGIN (EX. USERNAME)'] = "User"
$_SESSION['user']['time'] = "900"

这个验证:

<?php
session_start();
//create session (JUST FOR ONE TIME)
if (isset($_SESSION['user']['THE SESSION KEY FOR LOGIN (EX. USERNAME)']) and time() -$_SESSION['user']['TIME'] > 900){
     unset($_SESSION['user']);
     echo "logout"
    }
?>

在客户端你必须创建Ajax进行验证,我建议如果你不完全理解,你只需在你的页面中使用jQuery中的ajax,

<script src"{YOUR JQUERY PLACE}">
setTimeout(function(){
$.ajax({
   url:"checker.php",
   dataType:"html",
   type:"GET",
   success:function(html){
      if(html == "logout"){
      //whatever you want..
      //window.location.reload(); for reload you page,
      }
   }
});
}, 3000); // this check from client for server every 3 second
</script>

并且在您的页面中,您必须再次通过PHP进行验证,这个想法是,服务器为用户设置时间,在客户端PC中,您向服务器请求检查此用户的请求。如果用户时间超过15毫特,这个PHP发送到服务器刷新你的浏览器,并在你的PHP所有页面,如果用户时间超过15毫特,你必须给出语法注销。

答案 1 :(得分:0)

好吧,当用户登录时,您将登录时间(time())保存在$_SESSION变量中。然后,在采取任何行动之前,检查

if (time() >= $_SESSION["login_time"]+3600) {
    //Log the user out
}

3600是一小时内的秒数,因此您基本上在用户登录时加上时间时间现在 ?”。如果确实如此,则将用户注销。

将其置于会话中的原因是因为如果会话本身过期,您的用户无论如何都会被注销。

答案 2 :(得分:-1)

以下是每3秒重新加载一次窗口的示例。这可以与AJAX结合使用来发出请求并处理响应,以便您可以注销用户。

link

 var interval = null;

 $(function(){
      interval = setInterval(reloadWindow, 3000);
  });

 function reloadWindow(){
    location.reload()
 }