如果用戶不點擊網站的“退出”鏈接,而直接關閉浏覽器(或者強制關閉浏覽器進程、死機等),服務器無法處理用戶退出網站的請求,解決方式如下:
方式1:在每個頁面中加入隱藏的IFrame,以異步刷新的方式定期刷新iframe頁面,如每隔10S刷新一次,當服務器在一定的時間內未收到用戶的刷新請求,則認為用戶已經退出
優點:能在短時間內判斷出用戶是否已經退出 缺點:增加用戶請求次數,所消耗的服務器資源較大
方式2:使用cookie保存用戶登錄信息,不要設置cookie的過期時間,當關閉浏覽器時,cookie會自動過期
優點:處理方便 缺點:用戶浏覽器不一定支持cookie,也就無法實現該方式
方式3:在頁面中添加onunload事件,當關閉浏覽器時,自動跳轉到“退出”頁面(loginout.action)
優點:退出時,能及時進行處理 缺點:當用戶打開多個頁面時,關閉任何一個頁面都有可能導致用戶的退出
方式4:記錄用戶的每次操作時間(包括頁面刷新、提交表單等),在數據庫中用作業每隔一段時間檢查上次的操作時間,當操作時間大於一定的數值時,就認為該用戶已經退出
優點:無論哪種非正常退出,都能夠進行處理 缺點:進行檢查的時間間隔不容易確定,如果用戶在線,當長時間未操作,也會認為用戶已經退出
方式5:等待session失效
優點:你可以不用做任何工作 缺點:用戶可以在你等待的這段時間內重新登錄。