PHP自动注销,无需刷新页面

时间:2015-02-11 07:50:19

标签: 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['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

4 个答案:

答案 0 :(得分:6)

我想最好的实现方法是使用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

$(document).ready(function(){
  setTimeout(function(){
        $.get("check.php", function(data){
        if(data==0) window.location.href="logout.php";
        });
    },1*60*1000);
});

如果您希望在一分钟后进行检查,只需将其打包在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);
});

答案 1 :(得分:1)

你不能用php做到这一点。您需要在javascript中计算时间并在此之后发出ajax请求。最简单的方法可能是使用像IdleTimeout这样的jQuery插件。

答案 2 :(得分:0)

PHP代码需要被调用/运行才能执行......它不会在后台运行,除非运行它...

您有几个选择:

Shikhar建议的

1: Ajax ..你必须在javascript中使用类似setTimeout的东西,每分钟调用一次或者经常调用

2: cron作业 ...但是一个cron作业会检查每个活动的会话文件,如果它已经过期,那么你只需将其删除(杀死一个会话)

3:还有其他方法加载PHP文件的频率与您想要检查一样

即使有了上述内容,也无法确定这样做..

Cron job / PHP loading ..他们需要一个触发器...而cron作业不会在他们的会话过期的第二个用户重定向。

你唯一的选择是在计时器上使用ajax发布到服务器并检查会话是否仍然有效,如果没有,则在响应从PHP返回到ajax调用后重定向。

但即使这样,一旦用户登录并且他们禁用了JS ......你就不会得到重定向或检查。

答案 3 :(得分:0)

@JOB您需要触发类似于

的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>

此脚本将每1秒检查一次注销状态,如果用户在PHP脚本决定的时间内处于空闲状态,则会注销用户。