2011-04-18 83 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