一尘不染

这是销毁php中所有会话数据的正确方法吗?

php

从php.net获得它,但是我不确定这是每个人如何破坏所有会话的方式吗?

// Unset all Sessions
$_SESSION = array();

if (isset($_COOKIE[session_name()])) {
    setcookie(session_name(), '', time() -42000, '/');
}

    session_destroy();

代码会破坏所有会话吗?这是最常见的方式吗?你们如何破坏php会话?

哦,对了,那是session_name()什么?所有会话名称?例如$_SESSION['var1']$_SESSION['var2']......?

我不需要再使用unset($_SESSION['var1']);了吗?

session_destroy()和之间有什么区别unset($_SESSION[])


阅读 342

收藏
2020-05-29

共1个答案

一尘不染

首先,您应该知道什么是会话:您可以将会话视为与随机标识符(会话ID)相关联的服务器端数据容器。该会话ID需要由客户端提供,以便服务器可以将与该会话ID(并因此与该会话)关联的数据加载到$_SESSION变量中。该$_SESSION变量中的所有内容也称为当前活动会话的
会话变量

现在对您的问题:

代码会破坏所有会话吗?这是最常见的方式吗?你们如何破坏php会话?

提供的代码仅删除当前会话的会话数据。该$_SESSION=array();语句将简单地重置会话变量,$_SESSION以便将来对该会话变量的访问$_SESSION将失败。但是会话容器本身尚未删除。可以通过致电来完成session_destroy

哦是的,顺便说一句,session_name()是什么?所有会话名称?例如$ _SESSION [‘var1’],$ _ SESSION
[‘var2’] …?

该会话名称只是用来识别一个Cookie,URL查询或通过POST参数传递会话ID参数。PHP的默认值为PHPSESSID。但是您可以将其更改为所需的任何内容。

我不需要使用unset($ _ SESSION [‘var1’]); 还有吗???

否。首字母$_SESSION = array();删除所有会话数据。

使用session_destroy和unset($ _ SESSION [])有什么区别?

session_destroy将删除整个会话容器,而unset重置$_SESSION变量或仅删除当前运行时的会话数据。

2020-05-29