2010-05-15 94 views
20

可能重複:
How do I expire a PHP session after 30 minutes?銷燬或取消會話時,用戶關閉瀏覽器不點擊註銷

我摧毀logout.php所有會話var和調用它,當用戶點擊在註銷時,用戶不會點擊logout.php,而是直接關閉瀏覽器。我怎樣才能刪除會話呢?

+3

Duplicates:http://stackoverflow.com/questions/2201750/php-destroy-session-on-close-of-main-window,http://stackoverflow.com/questions/2171821/how-do-i -make-my-site-automatically-sign-out-a-user-when-they-close-their-browser,http://stackoverflow.com/questions/959655/destroy-session-on-window-close等等:http://stackoverflow.com/search?q=php+session+browser+close – 2010-05-15 11:56:00

+1

感謝您的答覆,在哪裏以及什麼是會話超時的語法。 – nectar 2010-05-15 11:56:28

+0

另請參閱:http://stackoverflow.com/questions/887919,http://stackoverflow.com/questions/520237和http://stackoverflow.com/questions/508959 – Gumbo 2010-05-15 12:17:15

回答

13

您可以設置過期時間會話數據,每個session_start通話測試,並摧毀了會議,如果它過期:

session_start(); 
if (!isset($_SESSION['EXPIRES']) || $_SESSION['EXPIRES'] < time()+3600) { 
    session_destroy(); 
    $_SESSION = array(); 
} 
$_SESSION['EXPIRES'] = time() + 3600; 
+2

這是一個有點尷尬的解決方案,你不覺得嗎?有一個內置的功能! – 2010-05-15 11:59:48

+1

$ _SESSION ['EXPIRES'] ....'EXPIRES'是特定的,或者我可以將我的會話var名稱? – nectar 2010-05-15 12:01:17

+0

@GuidoH:你應該更好地檢查session_cache_expire實際上做了什麼。 – Gumbo 2010-05-15 12:04:09

12

你不能。但是,會話cookie通常在沒有過期時間的情況下發送,這意味着在瀏覽器關閉時它們被刪除,因此會話丟失。

+0

是否有一些新聞要避免這個問題? – neoDev 2015-03-08 12:17:33

1

會話可以設置爲簡單地到期服務器不聽從客戶經過一段時間後。這就是你要尋找在當瀏覽器窗口關閉提供您不要修改會話cookie過期時間

3

PHP會議應自動失效的方向......

馬丁。如果這沒有發生,那麼我會假設你已經以某種方式修改了這個,我們需要更多的細節來協助。

1

如果您沒有爲會話cookie設置過期時間,當用戶關閉瀏覽器時,它將被刪除,對於大多數實際用途(除非您擔心存儲或安全性),該瀏覽器具有相同的效果。如果這還不夠好,您可以將會話設置爲非常快到期,並定期通過AJAX進行刷新。

相關問題