2012-08-24 236 views
0

嗨,大家好,有誰能讓我解決問題。我只是檢查瀏覽器關閉事件,如果用戶關閉了瀏覽器或關閉了同一網站的所有標籤頁,則會破壞php會話。關閉瀏覽器清除PHP會話

我使用了一些腳本,但它們正在銷燬頁面刷新的會話(F5或CTRL + R或瀏覽器刷新按鈕)。

我只需要使用AJAX來檢查瀏覽器的關閉按鈕或ALT + F4 ..

總之調用PHP函數,當用戶完全關閉瀏覽器或關閉所有標籤。

+0

[您嘗試過什麼?](http://whathaveyoutried.com) – 2012-08-25 01:50:04

+0

無法從網站中檢測到瀏覽器關閉事件。 –

+0

可能重複的[銷燬窗口關閉會話?](http://stackoverflow.com/questions/959655/destroy-session-on-window-close) – mplungjan

回答

4

一旦用戶關閉瀏覽器,會話應自動丟棄。除非有某種「記住我」的功能。

+0

感謝評論,我用記住我的功能,我需要緊密地檢查瀏覽器。 –

+1

如果您使用「記住我」功能,爲什麼在關閉瀏覽器後嘗試終止登錄?這不會使Remember Me功能無用嗎? –

0

當瀏覽器關閉時會話會自動銷燬,您想要做什麼?

+0

感謝評論,但我需要強力檢查瀏覽器。 –

+0

這似乎不是一個好的解決方案,你能否更具體地告訴我們你想要做什麼? – Intrepidd

1

有沒有辦法保證你的服務器可以知道用戶已經關閉了他們的瀏覽器 - 不要試圖實現這一點。

當用戶關閉瀏覽器時,會話將自動丟失,因爲瀏覽器不會保留用於將自身與生成的PHP會話關聯的cookie。但是,這並不是必然的保證。你可能需要問一個不同的問題。

+0

感謝您的寶貴意見 –

1

PHP會議的工作是這樣:

它存儲陣列的每個實例靜態變量類型,並通過存儲的哈希值作爲被叫PHPSESSID一個cookie標識會話變量。

那個Cookie的生命期是在瀏覽器打開的時候,在瀏覽器關閉的時候Cookie被丟棄了。

某些瀏覽器可能存儲該Cookie永久,但會話在服務器端有超時。

你可以在Browser Close上運行一個函數的情況是不可能的,因爲Browser Kill的所有在運行JavaScript時都退出。

+0

會話cookie的_default_生存期爲0,即標記爲「客戶端會話關閉時刪除」。但是_can_可以更改,請參閱http://docs.php.net/session.configuration#ini.session.cookie-lifetime。而且......還有其他的方式來傳輸會話ID,但他們有其他(和更大的)問題。 – VolkerK