2015-07-06 50 views
0

假設您有一位用戶在網站上登錄了自己的帳戶,並使用大量標籤打開了多個頁面。指示用戶已註銷多個標籤

然後他註銷其中一個選項卡並繼續執行其他操作,但後來決定返回到網站。

現在,他可能忘記了他已註銷並單擊了其中一個打開的選項卡中的某些內容,但無論點擊了什麼內容,都需要他已經登錄才能看到它 - 這意味着PHP頁面將顯示一條錯誤消息。

現在我的問題是:如何讓瀏覽器注意到用戶已經跨多個標籤註銷。有點像Facebook的做法 - 如果您打開多個選項卡,並使用其中一個註銷,然後打開另一個,它會顯示一個彈出框告訴您登錄。

這是如何完成的?

因爲,很明顯,在發生這種事情的情況下,我不希望用戶在我的頁面中看到錯誤。

+0

我想你是指使用長輪詢,SSE或Websockets。從本質上講,您可以在服務器上打開永久連接(在每個選項卡中),通常通過JavaScript和/或HTML5完成,您可以通過它來回發送消息。服務器可以在註銷時生成一條消息,該消息將廣播到所有選項卡中的所有打開的連接。您可以捕獲該消息並採取行動(顯示通知,重定向,...)。我想這將是一個很好的閱讀你:http://stackoverflow.com/questions/11077857/what-are-long-polling-websockets-server-sent-events-sse-and-comet – Timusan

回答

0

對於IsLoggedOut,您可以在cookie中保存一個標誌。

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);