2013-04-10 84 views
1

我有一個簡單的登錄系統。 例如localhost/login.php 即時通訊使用會話記住用戶是否登錄到我試圖清除Firefox瀏覽器歷史記錄並刷新當前頁面(管理員面板頁面),頁面將被轉發到登錄頁面。PHP會話

我想知道爲什麼我只是清除瀏覽器歷史記錄,會話也會被刪除? 會話存儲在服務器中。

+1

您清除了歷史**包括餅乾** ...? – deceze 2013-04-10 09:38:33

+0

關閉瀏覽器後,會話將被推遲。這是爲了這樣做的。對非重要數據使用cookie或html localStorage。 – 2013-04-10 09:42:17

回答

1

由於看到function.session-id.php

會話使用cookie保存session_id值。因此,當您清除瀏覽器緩存/ cookies /歷史記錄時,它也會清除session_id並生成一個新的!

+0

不是100%準確。它清除* cookie *,這基本上意味着客戶端不再有任何會話的任何處理。 – deceze 2013-04-10 09:39:36

+0

確切地說,也許我沒有以正確的方式解釋它,但我想這是可以理解的。 – silentw 2013-04-10 09:40:35

4

是會話存儲在服務器上。但是該會話(session_id)的引用存儲在客戶端的cookie中。當您使用cookie清除瀏覽器歷史記錄時,您將失去參考ID到服務器上的會話存儲區。

2

這是因爲會話通常依靠Cookie(存儲在客戶端瀏覽器中)識別客戶端並將其鏈接到存儲的會話。一旦歷史記錄被刪除,該會話仍然存在於服務器上,但不再鏈接到客戶端。

會話也可以設置爲在URL中使用GET變量而不是cookie。但這通常被認爲是安全風險,因爲用戶有時會將他們的URL發送給其他人。

1

我同意Mahendra。 $_SESSION[]存儲在服務器上,但引用存儲在客戶端,因此當您清除會話時,客戶端會話沒有任何值來比較會話,因此它也會清除服務器會話。

使用unset($_SESSION[])用來清除會話對象