2011-04-18 115 views
25

可能重複:
What is the difference between session_unset() and session_destroy() in PHP?會話未設置,或session_destroy?

什麼是最好的安全性,如果會話未設置爲加載時間更好的下一次會議上有訪問,而不是重現?

+0

你能澄清你的問題嗎? – bensiu 2011-04-18 01:57:08

+0

有會話銷燬和未設置,有什麼區別? – Basic 2011-04-18 01:58:22

+0

我不認爲這是重複的。從接受的答案來看,我認爲用戶的意思是'unset()',而不是'session_unset()'。 – 2015-04-17 19:41:31

回答

46

取消設置會銷燬特定的會話變量,而session_destroy()將銷燬該用戶的所有會話數據。

這真的取決於你的應用程序,你應該使用哪一個。請牢記上述內容。

unset($_SESSION['name']); // will delete just the name data 

session_destroy(); // will delete ALL data associated with that user. 
+3

謝謝,清除它,會話銷燬似乎更安全:) – Basic 2011-04-18 02:00:14

+2

如果你的目標是銷燬該用戶的所有會話數據,是的。 – 2011-04-18 02:02:15

+0

是的,這樣會比較安全,就像在註銷鏈接中一樣。 – Basic 2011-04-18 02:03:12

8

一個需要注意的,在$_SESSION變量仍設置在同一個頁面調用session_destroy()作爲地方使用unset($_SESSION)$_SESSION = array()時,這是不是這種情況了。此外,unset($_SESSION)吹走了超全球$_SESSION,所以只有當你摧毀一個會議時才這樣做。

綜上所述,最好像PHP文檔在the first example for session_destroy()中那樣做。

+0

任何想法爲什麼$ _SESSION變量在調用session_destroy()之後仍然設置? – wkm 2012-07-23 20:36:15

+2

@wkm,「'session_destroy()'銷燬與當前會話相關的所有數據,不會取消設置與會話相關的全局變量,也不會取消設置會話cookie,要再次使用會話變量'session_start ()'必須被調用。「 - http://php.net/manual/en/function.session-destroy.php – 2017-10-17 07:14:00