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

bbt*_*ang 13 php session

从php.net得到它,但我不确定这是怎么每个人都摧毁所有会话?

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

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

    session_destroy();
Run Code Online (Sandbox Code Playgroud)

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

哦是的,顺便问一下,那是session_name()什么?所有会话名称?例如$_SESSION['var1'],$_SESSION['var2']......?

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

使用session_destroy()unset($_SESSION[])?之间有什么不同?

Gum*_*mbo 21

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

现在回答你的问题:

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

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

另请参见真正破坏PHP会话?

哦是的,顺便说一下,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变量只会删除当前运行时的会话数据.


Mar*_*ius 12

这只会破坏当前用户会话,而不是所有其他用户会话.

尝试使用session_save_path()找出会话数据的存储位置,然后删除那里的所有文件.

  • @bbtang:它会销毁当前活动会话的所有会话变量. (2认同)