我正在尋找一種可靠的方式來註銷用戶或在瀏覽器關閉時放棄他們的會話。有沒有辦法與標籤式瀏覽器做到這一點?任何建議表示讚賞。謝謝!當瀏覽器關閉時,是否有一種可靠的方式來記錄用戶?
回答
還有就是要做到這一點立即當客戶關閉瀏覽器沒有可靠的方法。有beforeunload
事件,但即使如此,當您在此事件期間發出ajax請求時,也無法保證到達服務器。儘管如此,您還是遇到了多個瀏覽器選項卡的問題。
最可靠的方法是在服務器端(例如1分鐘)具有相對較短的會話超時並在客戶端引入基於Ajax的心跳(例如,每30秒)以保持會話存活。
有可能是因爲您所想,這是解決方案的唯一功能要求更好的方法。例如,如果您實際意圖是所有的登錄限制在1元註冊用戶,那麼你最好收集所有的登錄和相關的會議,然後比較這對每一個登錄名和無效的,如果存在的任何先前的會話。這種方式在JS禁用的客戶端上也可以工作。
一個可行的技術是使用AJAX來保活請求發送到您的服務器經常 - 例如每一分鐘。然後,如果沒有按預期收到保持活動狀態(或幾個順序),則可以立即放棄會話。
否則,有實現,沒有可靠的方法。由於瀏覽器和服務器之間沒有持久連接,因此無法檢測到您可能在瀏覽器中運行的任何JavaScript代碼無法控制的情況。例如,當網絡出現故障時,即使瀏覽器的窗口仍處於打開狀態,您也可能要關閉會話。因此,爲了使系統足夠強大,您應該檢測網絡中斷,作爲瀏覽器保持活動機制的「副作用」(例如,像Gmail那樣)。
除非你使用的WebSockets或某種長輪詢每個追蹤「實時」與客戶端的連接選項卡,你可能要等到會話超時在服務器端。
您可以通過jQuery,Ajax和PHP 的組合做了jQuery
function updatestatusOFF(){
// Assuming we have #shoutbox
$('#connection').load('connection.php?user=<?php echo $_SESSION['username']; ?>&offline=true');
}
卸載腳本之前
<script>window.onbeforeunload = function() { return updatestatusOFF(); }</script>
和PHP,你會寫自己,我」你可以做更多的事情。 它不是最可靠的,但它是實現這一點最簡單的方法。如果你想實時報告..看看彗星
如果你不使用cookies來保存用戶的登錄信息,它應該日誌他們時,他們關閉瀏覽器,因爲任何會話cookie應該被殺死當瀏覽器關閉時。
顯然這並非總是如此(Firefox登錄後保留登錄信息的see here for an example),因爲「會話恢復」功能我們現在模糊了被視爲「單一瀏覽器會話」之間的界限。 (我個人認爲這應該被歸類爲一個錯誤,但那只是我的看法)。
有兩種可能的技術。第一個是(正如yojimbo87在我之前提到的)使用web套接字來保持客戶端和服務器之間的連接,並且當套接字關閉時,終止會話。這裏的問題是,網絡套接字支持是有限的,並且除了出血性邊緣瀏覽器(FF4,Chrome,IE9等)之外肯定不可能。
另一種方法是使用AJAX不斷輪詢服務器,告訴它該頁面仍在被查看,所以如果你例如每隔30秒通過AJAX發送一個保持活動請求,會話中請求的時間戳。如果用戶回到頁面,並且當前請求和最後一個請求之間的時間差異超過45秒(考慮延遲),您就會知道用戶關閉了瀏覽器並需要登錄再次。
在這兩種情況下,但是有一個致命的缺陷,那就是它們依賴於JavaScript。如果用戶沒有啓用JavaScript,那麼最終會以不斷的登錄提示破壞用戶體驗,這顯然是一個糟糕的主意。
在我看來,我認爲其合理單純依靠會話cookie被當用戶關閉瀏覽器窗口瀏覽器中刪除,因爲這是他們應該做的事情。當客戶端瀏覽器執行不合需要的行爲時,作爲開發人員不能被指責,因爲它完全不在您的手中,並且沒有功能性的解決方法。
- 1. 檢測用戶瀏覽器是否關閉瀏覽器
- 2. 是否有跨瀏覽器的方式來關閉使用JavaScript的Cookie?
- 3. 任何方式來檢查是否有人用Javascript/PHP關閉了瀏覽器?
- 4. 在瀏覽器關閉時更新表的最可靠方法是什麼?
- 5. 有另一種方式來瀏覽C#
- 6. 瀏覽器關閉時服務器是否「關閉」? PHP - MYSQL
- 7. 使用ASP.Net,是否有一種編程方式來截取瀏覽器內容?
- 8. 當用戶關閉瀏覽器時自動註銷用戶
- 9. 當用戶關閉瀏覽器時,保存註銷時間
- 10. 鉻:當瀏覽器關閉
- 11. 有沒有可靠的方式來記錄用戶啓動的Facebook apprequests?
- 12. 瀏覽器關閉時的單用戶多登錄預防
- 13. 當用戶關閉瀏覽器時,sessionlistner不起作用
- 14. 當瀏覽器關閉時註銷Magento
- 15. Magento - 當瀏覽器關閉時註銷
- 16. 當用戶在瀏覽器中返回時,是否有一種跨瀏覽器的方式使上一頁實際從服務器加載內容?
- 17. 是否有可靠的方法來確定我的瀏覽器支持哪種ECMA-262版本?
- 18. 有沒有一種可靠的方法來計時JavaScript動畫與瀏覽器中播放的音頻文件?
- 19. 檢查瀏覽器是否已關閉
- 20. 是否有一種可靠的方式來爲Hive UDF運行終結代碼?
- 21. 一種方法來檢查瀏覽器是否支持otf
- 22. 如果用戶關閉瀏覽器,是否有任何技術可以終止用戶登錄會話?
- 23. 當瀏覽器窗口關閉時自動註銷用戶 - salesforce
- 24. 當用戶關閉瀏覽器時,把http放入
- 25. Firefox擴展:當用戶關閉瀏覽器時執行操作
- 26. 當用戶在java中關閉瀏覽器時刪除文件
- 27. 當瀏覽器關閉時Rails ActionCable取消訂閱用戶
- 28. 當用戶關閉窗口或瀏覽器時,jquery任務
- 29. 是否有可能捕捉瀏覽器關閉交叉標記和CTRL w?
- 30. 如果用戶關閉瀏覽器,WCF服務是否工作
使用僅會話的cookie,只保留瀏覽會話的長度(即直到用戶關閉瀏覽器)。 – Cameron 2011-03-13 21:31:56