我试图编写一个人登录的脚本,并将他的上次登录时间戳更新到表中。如果他已登录超过1小时,即使他正在互动,也要立即将他登出。我想知道我该怎么做?我正在使用time()函数来存储登录时间,如下所示:
$lastlogin = time();
这已标记为重复:Automatic Logout after 15 minutes of inactive in php
但不,这是不同的。我希望自动发生而无需用户刷新页面。该问题的答案只有在用户与网站交互时才会执行,但我希望用户即使用户离开而没有进行交互也会退出。
答案 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结合使用来发出请求并处理响应,以便您可以注销用户。
var interval = null;
$(function(){
interval = setInterval(reloadWindow, 3000);
});
function reloadWindow(){
location.reload()
}