Javascript PHP自动注销,无需单击
我试图在php应用程序中实现一个自动注销,在用户处于非活动状态10秒或更长时间之后。我的代码一切正常,唯一的问题是要进行注销,用户必须再次单击屏幕。我想提醒消息和注销发生自动没有任何点击。以下是我的代码片段:Javascript PHP自动注销,无需单击,javascript,php,html,xampp,Javascript,Php,Html,Xampp,我试图在php应用程序中实现一个自动注销,在用户处于非活动状态10秒或更长时间之后。我的代码一切正常,唯一的问题是要进行注销,用户必须再次单击屏幕。我想提醒消息和注销发生自动没有任何点击。以下是我的代码片段: if (isset($_SESSION['last_action'])) { //Figure out how many seconds have passed //since the user was last active. $secondsInactive
if (isset($_SESSION['last_action']))
{
//Figure out how many seconds have passed
//since the user was last active.
$secondsInactive = time() - $_SESSION['last_action'];
//Convert our minutes into seconds.
$expireAfterSeconds = 10;
//Check to see if they have been inactive for too long.
if($secondsInactive >= $expireAfterSeconds){
//User has been inactive for too long.
//Kill their session.
echo "<script>
alert('You have been logged out');
window.location.href='../clinician/logout.php';
</script>";
}
}
if(isset($\u会话['last\u action']))
{
//计算过了多少秒
//由于用户上次处于活动状态。
$secondsInactive=time()-$\会话['last\ u action'];
//把我们的分钟转换成秒。
$expireAfterSeconds=10;
//检查它们是否长时间处于非活动状态。
如果($secondsInactive>=$expireAfterSeconds){
//用户处于非活动状态的时间太长。
//终止他们的会话。
回声“
警报(“您已注销”);
window.location.href='../clinician/logout.php';
";
}
}
您只需调用javascript中每隔一段时间运行的函数
<script language='javascript'>
var timeout = 10 * 1000; // 10 seconds
var lastAction = <?php echo isset($_SESSION['last_action']) ? $_SESSION['last_action'] : time();?>;
setInterval(function(){
var now = new Date();
if (typeof lastAction !=='undefined' ){
if(now.getTime() - lastAction >= timeout ){
alert('You have been logged out');
window.location.href='../clinician/logout.php';
}
}
}, 1000) // repeat every 1 second;
</script>
变量超时=10*1000;//10秒
var lastAction=;
setInterval(函数(){
var now=新日期();
如果(上次操作的类型!=='undefined'){
if(now.getTime()-lastAction>=超时){
警报(“您已注销”);
window.location.href='../clinician/logout.php';
}
}
},1000)//每1秒重复一次;
你也可以选择将你的时间间隔设置为10000(10秒),不需要经常检查。一旦达到10秒,它将注销
但我想你也会希望,如果用户移动鼠标或单击某个东西,它不应该将他们注销,因为他们在页面上处于活动状态。如果是,在setInterval函数之后,可以添加
<script language='javascript'>
var timeout = 10 * 1000; // 10 seconds
var lastAction = <?php echo isset($_SESSION['last_action']) ? $_SESSION['last_action'] : time();?>;
var timer = function(){
return setInterval(function(){
var now = new Date();
if (typeof lastAction !=='undefined' ){
if(now.getTime() - lastAction >= timeout ){
alert('You have been logged out');
window.location.href='../clinician/logout.php';
}
}
}, 1000) // repeat every 1 second;
}
window.onmousemove = function(e){
clearInterval(timer);
timer();
}
window.onclick= function(e){
clearInterval(timer);
timer();
}
// and make initial call
timer();
</script>
变量超时=10*1000;//10秒
var lastAction=;
变量计时器=函数(){
返回setInterval(函数(){
var now=新日期();
如果(上次操作的类型!=='undefined'){
if(now.getTime()-lastAction>=超时){
警报(“您已注销”);
window.location.href='../clinician/logout.php';
}
}
},1000)//每1秒重复一次;
}
window.onmousemove=函数(e){
清除间隔(计时器);
定时器();
}
window.onclick=函数(e){
清除间隔(计时器);
定时器();
}
//打个电话
定时器();
您需要在Javascript中为此设置一个计时器。这可以通过使用setInterval()
函数使用JavaSciprt轻松完成。Php是一种服务器端编程语言,只执行一次。要在网站会话期间自动进行,您必须使用javascript。这是一个有用的答案。我本想写一个同样的答案,但我的网络不见了:我把你的帮助答案投了上去。太棒了!谢谢,我正在使用相同的代码,但它在某个时间后注销(我已设置InInterval)。如何在会话变量中再次添加最新时间?如果客户端空闲10秒,它将注销。这就是目的。您可以增加超时值以使其保持更长的时间。