【问题标题】:Indicating User Has Logged Out Across Multiple Tabs指示用户已跨多个选项卡注销
【发布时间】:2015-07-06 02:47:58
【问题描述】:

假设您有一个用户,他在网站上登录了他的帐户并使用大量标签打开了多个页面。

然后他在其中一个选项卡中注销并继续做其他事情,但随后决定返回该网站。

现在,他可能忘记了他已注销并单击了剩余打开的选项卡之一中的某些内容,但是他单击的任何内容都需要他已登录才能查看 - 这意味着 PHP 页面将显示一条错误消息。

现在我的问题是:如何让浏览器注意到用户已跨多个标签注销。有点像 Facebook 的做法 - 如果您打开了多个标签,然后使用其中一个注销,然后打开另一个,它会显示一个弹出框,告诉您登录。

这是怎么做到的?

因为,显然,在发生这种情况的情况下,我不希望用户在我的页面中看到错误。

【问题讨论】:

  • 我猜你指的是使用长轮询、SSE 或 Websockets。从本质上讲,您有一个永久连接到服务器(在每个选项卡中),通常通过 JavaScript 和/或 HTML5 完成,您可以通过它们来回发送消息。服务器可以在注销时生成一条消息,该消息将广播到所有选项卡中的所有打开的连接。您可以捕捉到该消息并据此采取行动(显示通知、重定向等)。我想这对你来说是一本好书:stackoverflow.com/questions/11077857/…

标签: php jquery browser tabs


【解决方案1】:

您可以在 cookie 中为 IsLoggedOut 保存一个标志。

createCookie('IsLoggedOut','false',7);

function CheckIsLoggedOut()
{
 var x = readCookie('IsLoggedOut')
 if (x == "true") {
    //logout  and redirect to login page
 }
}

当用户在任何选项卡中注销时,将 cookie 更新为 true。

createCookie('IsLoggedOut','true',7);

间隔检查cookie状态,如果状态发生变化,则在所有其他选项卡中注销。

setInterval(CheckIsLoggedOut, 1000);

【讨论】:

    猜你喜欢
    • 2018-09-05
    • 1970-01-01
    • 2014-09-30
    • 2011-03-25
    • 2014-03-08
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 2016-02-14
    相关资源
    最近更新 更多