使用jquery php自动注销空闲超时

时间:2012-04-26 19:34:42

标签: php jquery idle-timer

我搜索并找到一些使用jquery设置空闲超时的示例。

1 - Idle Timeout By Eric Hynds DEMO

2 - Idle Timer By paulirish

3 - Fire Event When User is Idle / DEMO HERE

4 - detect user is active or idle on web page

5 - Comet Long Polling with PHP and jQuery

6 - detacting idle timeout javascript

......以及其他一些类似的例子

在这些示例之间,数字1对于我需要更好,因为我需要在X分钟(logout.php或任何url)之后使用任何确认警报自动注销用户。但这种方法不适合服务器。问题是:这个jquery代码发送ping到任何url:keepAlive.php in loop / pooling for request OK text。见firebug屏幕:

enter image description here

如何解决这个问题? 那么,其他示例只打印Idle / No Idle而不使用alert confirm和auto logout(logout.php或任何url)现在真的更好的方法是使用jquery / Php选择空闲超时?

由于

4 个答案:

答案 0 :(得分:3)

我在head部分使用元刷新元素,在X秒后自动将用户定向到注销页面。下面将在停留在同一页面20分钟后自动将用户发送到注销页面:

<meta http-equiv="refresh" content = "1200; url=http://www.site.com/user/logout">

这是有效的,(大多数情况下)支持跨浏览器,不依赖于启用JavaScript并且很容易实现。

如果您的网站的用户长时间停留在同一页面上(例如,通过JS进行交互),此解决方案将无法为您效果。它还不允许在重定向发生之前运行任何JS代码。

答案 1 :(得分:1)

以下是我应用于使用JavaScript和jQuery构建简单自动注销功能的方法。此脚本构建用于网页,当在25分钟内未检测到鼠标移动时,网页将自动转到注销页面。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<script type="text/javascript" language="javascript">
  var idleMax = 25; // Logout after 25 minutes of IDLE
  var idleTime = 0;

  var idleInterval = setInterval("timerIncrement()", 60000);  // 1 minute interval    
  $( "body" ).mousemove(function( event ) {
      idleTime = 0; // reset to zero
});

// count minutes
function timerIncrement() {
    idleTime = idleTime + 1;
    if (idleTime > idleMax) { 
        window.location="LogOut.php";
    }
}       
</script>

答案 2 :(得分:0)

<script>    
var idleMax = 5;  (5 min)
var idleTime = 0;
(function ($) {

    $(document).ready(function () {

        $('*').bind('mousemove keydown scroll', function () {
            idleTime = 0; 
            var idleInterval = setInterval("timerIncrement()", 60000); 
       });
        $("body").trigger("mousemove");

    });
}) (jQuery)
function timerIncrement() {
     idleTime = idleTime + 1;
     if (idleTime > idleMax) { 
         window.location="Your LOGOUT or Riderct page url here";
     }
 }
</script>

答案 3 :(得分:0)

轻松而有趣

     var autoLogoutTimer;
        resetTimer();
        $(document).on('mouseover mousedown touchstart click keydown mousewheel DDMouseScroll wheel scroll',document,function(e){
            // console.log(e.type); // Uncomment this line to check which event is occured
            resetTimer();
        });
        // resetTimer is used to reset logout (redirect to logout) time 
        function resetTimer(){ 
            clearTimeout(autoLogoutTimer)
            autoLogoutTimer = setTimeout(idleLogout,5000) // 1000 = 1 second
        } 
        // idleLogout is used to Actual navigate to logout
        function idleLogout(){
            window.location.href = ''; // Here goes to your logout url 
        }