取消设置或销毁特定会话的正确方法是什么


What is the right way to unset or destroy a particular session?

我有一个这样的会话:$_SESSION['mycatalogue']['user']

当我取消设置时,我会执行以下操作:unset($_SESSION['mycatalogue'])

我想知道的是,以下所有内容是否都是为了做同样的事情:unset($_SESSION['mycatalogue'])

unset($_SESSION['mycatalogue']['user'])

$_SESSION['mycatalogue']['user'] = ""

所以,当我取消设置会话或为其分配NULL时,它仍然将数组保留在内存中?

首先需要了解会话概念。您的会话是本$_SESSION['mycatalogue']['user']是会话名称中作为mycatalogue的索引。

如果你想从你的会话中取消设置特定的索引,那么像一样使用

 unset($_SESSION['mycatalogue']['user'])

这和您取消设置数组的索引是一样的。

 $_SESSION['mycatalogue']['user'] = ""

不会在会话中取消设置索引user。它只会将其设置为空。

unset($_SESSION['mycatalogue'])

将取消设置名为mycatalogue的所有会话。

session_destroy将取消设置与当前会话相关的所有数据,但不会取消设置任何全局变量

Unset将销毁特定的会话变量,而session_destroy()将销毁该用户的所有会话数据。

这实际上取决于你的应用程序,你应该使用哪一个。请记住以上内容。

unset($_SESSION['name']); // will delete just the name data
session_destroy(); // will delete ALL data associated with that user.