PHP 中的 session_unset() 和 session_destroy() 有什么区别?

2022-08-30 07:54:51

php.net 文档中:

session_destroy — 销毁注册到会话的所有数据

session_unset — 释放所有会话变量

我的三部分问题是:

这两个函数似乎非常相似。
两者之间的真正区别是什么?

两者似乎都删除了注册到会话的所有变量。它们中的任何一个实际上是否破坏了会话本身?如果没有,您如何完成此操作(销毁会话本身)。

这两个函数都没有删除客户端上的会话 cookie,这是正确的吗?


答案 1

session_unset只是清除变量。这相当于做:$_SESSION

$_SESSION = array();

因此,这只会影响局部变量实例,而不会影响会话存储中的会话数据。$_SESSION

与此相反,session_destroy会破坏存储在会话存储中的会话数据(例如,文件系统中的会话文件)。

其他一切都保持不变。


答案 2

session_destroy();正在删除整个会话。

session_unset();仅从会话中删除变量 - 会话仍然存在。只有数据被截断。


推荐