window onbeforeunload事件触发注销

时间:2018-02-22 15:02:50

标签: javascript jquery ajax window onbeforeunload

我在Stack Overflow上遇到过许多答案,说明JavaScript在浏览器关闭时无法检测到的问题。在大多数情况下,这是事实,但我发现下面的代码似乎能够检测到浏览器关闭。

window.onbeforeunload = function(){
   $.ajax({
     type: "POST",
     url: "logout.php"
  });
}

在一个完美的世界中,用户可以自行登出,也可以闲置足够长时间自动登出,但情况并非总是如此。

因此,当用户关闭浏览器时,我使用上面的代码调用logout.php脚本。

这是我的问题:当浏览我的网站时,似乎总是随机,上面的脚本被调用,用户当然会被注销。

我可以在它发生之前导航到一个页面或来回浏览多个页面。有时登录时会立即调用它,我甚至无法进入该站点。

我无法弄清楚为什么会发生这种情况,特别是随机发生。

修改

添加logout.php脚本:

<?php
  include ('include/sessions.php'); 
  $update = "UPDATE users SET lastlogoutdate = NOW(), currentlyloggedin = 'N' WHERE username = '$username'";
  $updateQuery = mysqli_query($dbc, $update);

  session_destroy();
  header('Location: index.php');
?>

1 个答案:

答案 0 :(得分:-1)

此声明可能对您或某人有帮助

 window.onbeforeunload = function(){
 if(event.clientX <=0 || event.clientY <=0)
 {
 $.ajax({
 type: "POST",
 url: "logout.php"
 });
  }
  }

只有当用户点击[X]按钮

时才会发生注销