检测Web应用程序中同一会话的多个选项卡或窗口

时间:2017-02-28 16:20:27

标签: javascript php jquery

我是JavaScript和php的新手,所以我有一个问题,是否有办法在浏览器的网站上检测同一会话的多个标签或窗口。  在我正在制作的网站上,当用户登录时,布尔(0-1)变量存储在数据库中的用户表中,该变量显示该用户是否已登录。在某人登录并关闭标签或浏览器窗口后,数据库再次更新它更改显示用户是否登录的变量。我这样做的方法是只调用脚本

$(window).bind("beforeunload",function(){
 $.ajax({ 
    url: "logout.php", 
    async: false
    });
})

如果用户关闭窗口或选项卡,logout.php将更新数据库。我的问题是,如果有人在同一网站的同一会话中打开多个选项卡,并且只关闭其中一个会话将保留,而数据库将更新该用户不再被记录。

编辑:我不想退出所有打开的标签,我只是不想保留用户仍在线的数据库,直到他关闭所有会话的标签窗口或点击退出按钮。

1 个答案:

答案 0 :(得分:6)

这是来自之前的堆栈溢出帖子:

if (+Cookies.get('tabs') > 0)
    alert('Already open!');
else
    Cookies.set('tabs', 0);

Cookies.set('tabs', +Cookies.get('tabs') + 1);

window.onunload = function () {
    Cookies.set('tabs', +Cookies.get('tabs') - 1);
};

URL: How to know if browser tab is already open using Javascript?

这应该对你有用!

*这不是我的代码,只是传递信息!