2010-10-06 88 views
1

我有一個PHP應用程序,我設置了$_SESSION['user']="logged"一旦用戶通過身份驗證。我稱之爲loginpage.php。瀏覽器關閉時會話cookie是否過期?

一旦被認證和會話變量集合,用戶被帶到與該線啓動該成員頁面:

<?php 
session_set_cookie_params(0,'/'); 
session_start(); 
if($_SESSION['user'] != 'logged') { 
header ("Location:loginpage.php"); 
}?> 

當用戶已登錄,關閉瀏覽器,然後訪問成員頁面,我期望他被重定向到loginpage.php。

但是,這不會發生。會話cookie仍然存在於瀏覽器中 - 我使用Firefox對其進行了測試。

有人可以向我解釋我錯了嗎?

+0

查看會話cookie以獲取其有效期。 – zerkms 2010-10-06 03:18:38

回答

3

該Cookie應該刪除,因爲你生前設置爲0

也許還有一個Firefox進程正在運行,來看看進入任務管理器。

0

Look here

「到期時間戳是相對於服務器時間設置的,與客戶端瀏覽器中的時間不一定相同。」

可能是...不知道。

1

此外,您應該在標題('Location:')之後終止腳本,否則它會繼續運行並向客戶端輸出「安全」頁面(或者如果您對Web服務器感到幸運,它)無論如何和消耗資源。

1

上面的答案,包括接受的答案都是錯誤的。

由於知名瀏覽器開發人員製作了一些design decisions,會話cookie不會在browswer關閉時過期。

基本上,會話即將到期的Cookie會干擾當前的瀏覽器行爲,瀏覽器會下載更新並要求重新啓動。 此類更新後的用戶重新啓動瀏覽器,並希望儘可能減少中斷。然而,保持原始會話cookie行爲會在瀏覽器更新=>重新啓動過程中立即清除一些cookie,並會中斷用戶體驗。 因此做出了設計決策,以便現在默認行爲是而不是清除會話cookie。想要返回原始行爲的高級用戶通常必須啓用特定的向後兼容性選項或明確的Cookie清除選項。

相關問題