Javascript PHP自动注销,无需刷新页面
我正在用PHP、JavaScript和HTML编写一个项目。当用户空闲1分钟时,我已成功完成自动注销。但问题是,我必须刷新页面才能执行它并注销 有人能帮我吗?这样,当1分钟结束,用户空闲时,代码将被执行,它将把我带到登录页面,而我不刷新它 这是我的密码:Javascript PHP自动注销,无需刷新页面,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我正在用PHP、JavaScript和HTML编写一个项目。当用户空闲1分钟时,我已成功完成自动注销。但问题是,我必须刷新页面才能执行它并注销 有人能帮我吗?这样,当1分钟结束,用户空闲时,代码将被执行,它将把我带到登录页面,而我不刷新它 这是我的密码: // check to see if $_SESSION['timeout'] is set if(isset($_SESSION['timeout']) ) { $session_life = time() - $_SESSION['time
// check to see if $_SESSION['timeout'] is set
if(isset($_SESSION['timeout']) ) {
$session_life = time() - $_SESSION['timeout'];
if($session_life > $inactive)
{
echo"<script type='text/javascript'>
window.alert('Your Session got Expired');
</script>";
header("Location: logout.php");
}
}
$_SESSION['timeout'] = time();
//Continuation of other codes
//检查是否设置了$\u会话['timeout']
如果(isset($\u会话['timeout'])){
$session_life=time()-$u session['timeout'];
如果($session\u life>$inactive)
{
回声“
window.alert(“您的会话已过期”);
";
标题(“位置:logout.php”);
}
}
$\会话['timeout']=time();
//延续其他守则
使用php无法做到这一点。您需要在javascript中计算时间,然后发出ajax请求。最简单的方法可能是使用jQuery插件,比如IdleTimeout。需要调用/运行PHP代码来执行。。。除非有什么东西在运行它,否则它不会在后台运行
您有几个选择:
1:Ajax如Shikhar所建议。。你必须在javascript中有一个类似setTimeout的东西,它会每分钟或每隔多久调用一次
2:cron作业。。。但是一个cron作业会检查每个活动会话文件,如果它已过期,则只需删除它(杀死会话)
3:有其他方法可以随时加载PHP文件
即使有上述情况,也没有确定的方法可以做到这一点
Cron作业/PHP加载。。他们需要一个触发器。。。而且cron作业不会在用户会话过期后立即重定向用户
在这里,您唯一的选择是在计时器上使用ajax发送到服务器,并检查会话是否仍然有效,如果无效,则在响应从PHP返回到ajax调用后重定向
但即便如此,一旦用户登录并禁用JS。。。您不会得到重定向或检查。我想最好的实现方法是使用JS和PHP的组合 check.php
if(isset($_SESSION['timeout']) ) {
$session_life = time() - $_SESSION['timeout'];
if($session_life > $inactive) echo "0";
else echo "1";
}
$_SESSION['timeout'] = time();
.js
或者,如果希望在每一分钟后检查一次,只需将其包装在setInterval(function(){},1*60*1000)
中,而不是setTimeout()
$(document).ready(function(){
setInterval(function(){
$.get("check.php", function(data){
if(data==0) window.location.href="logout.php";
});
},1*60*1000);
});
@您需要触发一个ajax请求,如下所示
<script type="text/javascript">
jQuery(document).ready(function(){
setInterval(function(){
jQuery.ajax({
url: 'http://localhost/your_script.php',
type: 'POST',
success:function(response){
alert("You are logged out");
return false;
}
});
}, 1000);
});
</script>
jQuery(文档).ready(函数(){
setInterval(函数(){
jQuery.ajax({
网址:'http://localhost/your_script.php',
键入:“POST”,
成功:功能(响应){
警报(“您已注销”);
返回false;
}
});
}, 1000);
});
此脚本将在每1秒后检查注销状态,如果用户在PHP脚本决定的时间内空闲,则注销该用户。如果您希望在不重新加载的情况下显示注销页面,则需要AJAX来完成此操作。我建议将JS包装在计时器/循环中,以满足此OP的要求。此答案简单地总结了工作,您以后可以做的唯一一件事就是开始使用JSON,这样您就可以使用JSON_encode()来回发送和接收参数了。感谢alot@void,这是Osome,我整理好了,只是在check.php中的代码中,您没有使用“{}”括号表示if和else,但是av调试的结果如下:
<script type="text/javascript">
jQuery(document).ready(function(){
setInterval(function(){
jQuery.ajax({
url: 'http://localhost/your_script.php',
type: 'POST',
success:function(response){
alert("You are logged out");
return false;
}
});
}, 1000);
});
</script>