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