session_destroy()
函數做什麼?要刪除全局數組$ _SESSION中的所有會話變量,我必須使用session_unset()
。要從客戶端瀏覽器會話(刪除會話ID和姓名),我不得不取消設置的cookie:爲什麼需要session_ destroy()?
unset($_COOKIES[session_id()]);
unset($_COOKIES[session_name()]);
爲什麼需要session_destroy()
功能?
session_destroy()
函數做什麼?要刪除全局數組$ _SESSION中的所有會話變量,我必須使用session_unset()
。要從客戶端瀏覽器會話(刪除會話ID和姓名),我不得不取消設置的cookie:爲什麼需要session_ destroy()?
unset($_COOKIES[session_id()]);
unset($_COOKIES[session_name()]);
爲什麼需要session_destroy()
功能?
session_destroy()
結束整個會話,這意味着它將從PHP的會話存儲中刪除,並且不能再次使用。如果您只會取消設置會話變量和cookie,那麼會話仍然是活動的服務器端,並且如果再次設置一些會話變量並將具有原始會話ID的Cookie再次發送到客戶端,則可能會被回收。
換句話說:會話基本上包含一個存儲在Web服務器某處的祕密ID,以及註冊到該會話的會話變量。會話ID被髮送到客戶端(通常作爲cookie),以便客戶端可以在以後的請求中被識別爲會話的「擁有者」。假設會話已經建立並已註冊到它的變量,這裏是一個什麼樣的功能做一個概述:
session_start()
進口屬於該客戶端從會話註冊表發送到$_SESSION
會話ID的所有會話變量陣列session_unset()
或致電unset()
上$_SESSION
變量將清除註冊到當前會話的所有變量,但它不會明確會議本身session_destroy()
這個不會從會話註冊表中刪除會話是將實際從會議註冊表清除會話,從而從字面上「摧毀」了會議的唯一功能雖然session_destroy()
將註銷所有會話變量,它不會清除,因此目前執行腳本的$_SESSION
陣列,所以它仍然是取消設置會話變量,以防止bug和安全問題是一個好主意。
相關提示,PHP手冊建議不要使用session_unset()
而是從取消設置的$_SESSION
鍵:
如果
$_SESSION
(或$HTTP_SESSION_VARS
對於PHP 4.0.6或以下)時,使用unset()
來取消註冊會話變量,即unset($_SESSION['varname']);
。
'僅對不使用$ _SESSION的舊版棄用代碼使用session_unset()。' 要釋放所有SESSION VARIABLES,請使用: '$ _SESSION = array()' – MTVS 2012-11-05 16:18:44
http://us.php.net/manual/en/function.session-destroy.php – 2012-03-02 18:51:46
非常感謝你,我讀過幾次,但無法理解它做什麼。爲什麼它不會真正破壞會議。要銷燬會話,我必須再使用兩個步驟。但實際上,session_destroy()應該爲我完成這些步驟。 – Green 2012-03-02 18:56:26
如果*另一個代碼*的答案爲您提供了所需的信息(我看不出它是怎麼回事),請您接受它?通常情況下,這是如何完成的:p – RobinJ 2012-03-04 10:49:42