我有一個簡單的登錄系統。 例如localhost/login.php 即時通訊使用會話記住用戶是否登錄到我試圖清除Firefox瀏覽器歷史記錄並刷新當前頁面(管理員面板頁面),頁面將被轉發到登錄頁面。PHP會話
我想知道爲什麼我只是清除瀏覽器歷史記錄,會話也會被刪除? 會話存儲在服務器中。
我有一個簡單的登錄系統。 例如localhost/login.php 即時通訊使用會話記住用戶是否登錄到我試圖清除Firefox瀏覽器歷史記錄並刷新當前頁面(管理員面板頁面),頁面將被轉發到登錄頁面。PHP會話
我想知道爲什麼我只是清除瀏覽器歷史記錄,會話也會被刪除? 會話存儲在服務器中。
會話使用cookie保存session_id
值。因此,當您清除瀏覽器緩存/ cookies /歷史記錄時,它也會清除session_id
並生成一個新的!
是會話存儲在服務器上。但是該會話(session_id)的引用存儲在客戶端的cookie中。當您使用cookie清除瀏覽器歷史記錄時,您將失去參考ID到服務器上的會話存儲區。
這是因爲會話通常依靠Cookie(存儲在客戶端瀏覽器中)識別客戶端並將其鏈接到存儲的會話。一旦歷史記錄被刪除,該會話仍然存在於服務器上,但不再鏈接到客戶端。
會話也可以設置爲在URL中使用GET變量而不是cookie。但這通常被認爲是安全風險,因爲用戶有時會將他們的URL發送給其他人。
我同意Mahendra。 $_SESSION[]
存儲在服務器上,但引用存儲在客戶端,因此當您清除會話時,客戶端會話沒有任何值來比較會話,因此它也會清除服務器會話。
使用unset($_SESSION[])
用來清除會話對象
您清除了歷史**包括餅乾** ...? – deceze 2013-04-10 09:38:33
關閉瀏覽器後,會話將被推遲。這是爲了這樣做的。對非重要數據使用cookie或html localStorage。 – 2013-04-10 09:42:17