2012-01-05 105 views
0

我寫了一個腳本(PHP)即使用會話,以便它結束在重啓瀏覽器後,也照本宣科了「註銷」功能(具有摧毀會議還刪除的cookie從瀏覽器)。節約時間結束

這裏是我的問題:

當用戶自願註銷時間由我的腳本保存。但我無法控制瀏覽器重新啓動或關閉的情況。

有什麼方法可以用來處理這些情況嗎?謝謝...

+0

想知道用戶何時關閉瀏覽器?也許可以做一個Ajax電話? – thatwasbrilliant 2012-01-05 20:04:18

+0

據我記得,你必須檢測文檔關閉事件(不記得名字),然後發送AJAX請求來保存數據。 – therealszaka 2012-01-05 20:04:51

+0

爲什麼你最初需要它? – zerkms 2012-01-05 20:05:10

回答

1

我會綁定一個AJAX事件卸載的Javascript事件。

$(window).unload(function() { 
    $.ajax({ 
     url: 'someLogoutRequest.php' 
    }); 
}); 
+1

同一站點的多個選項卡打開 - 會導致問題嗎? – hakre 2012-01-05 20:06:44

+0

......正如我在評論中提到的那樣 - 如果客戶剛剛失去了聯繫呢? – zerkms 2012-01-05 20:07:39

+0

卸載事件是特定於該選項卡,我很確定。 – jjs9534 2012-01-05 20:07:45

4

如果沒有來自瀏覽器的請求,您的服務器端(PHP)將不會注意到。

但是,如果你在更新數據庫中的最後一個活動的時間戳,你會知道什麼時候最後一次活動了。隨着會話在一段時間後被破壞,該用戶的最後一個活動將保留在數據庫中,直到下次登錄。

+0

我認爲這是解決方案,而且如果您關心用戶的上次訪問,您應該更新登錄用戶的時間戳或編寫自己的會話處理程序來跟蹤上次會話訪問時間。當然,會話數據會不時被清除(請參閱垃圾回收),所以如果您對時間戳感興趣,第一個選項就是要走的路。這樣你將永遠有用戶上次訪問時間。 – ashein 2012-01-05 20:09:20

2

你可以得到用戶頁面的一些合理區間服務器使用Ajax辦理入住手續。 (5分鐘?)然後每5分鐘在服務器上運行一次作業,以檢查那些長時間沒有簽入的用戶。你可以假設他們關閉窗口的時間,或者失去他們之間的連接是在他們的最後一次檢查和當前時間之間,然後破壞會話。

0

PHP會議通常在瀏覽器關閉(假設你不混淆cookie和session)會死,但,你可以補充一點的是時間戳時間後,任何明智的存儲時間標記的額外會議。無效,並清除會話。您通常會在用戶導航時更新此時間戳,以便它不會暫停中途導航。雖然我還沒有百分之百清楚你想要做什麼以及爲什麼。所以我的回答可能是需要的一個無聲的概念。 jjs9543有一個不是很糟糕的建議,但如果JavaScript在用戶瀏覽器上被禁用(我無法像幾年前那樣普遍,但沒有什麼值得說的),那麼建議將失敗。