Php 是否';会话_destroy()';完全销毁超级全局变量$\u会话并使其不可访问?

Php 是否';会话_destroy()';完全销毁超级全局变量$\u会话并使其不可访问?,php,session,session-variables,session-cookies,superglobals,Php,Session,Session Variables,Session Cookies,Superglobals,我知道了 session\u unset()删除所有会话变量,这意味着它只清除$\u session变量,相当于执行以下操作: $_SESSION = array(); 这只会影响本地$\u会话变量实例 session\u destroy()销毁存储在会话存储器中的会话数据 我的问题如下: session是否表示$\u session超级全局变量 当调用session_destroy()时,超级全局变量$\u session是否也会被销毁并变得不可访问 如果超级全局变量$\u SESSION即

我知道了

session\u unset()
删除所有会话变量,这意味着它只清除
$\u session
变量,相当于执行以下操作:

$_SESSION = array();
这只会影响本地
$\u会话
变量实例

session\u destroy()
销毁存储在会话存储器中的会话数据

我的问题如下:

  • session是否表示$\u session超级全局变量
  • 当调用session_destroy()时,超级全局变量
    $\u session
    是否也会被销毁并变得不可访问
  • 如果超级全局变量$\u SESSION即使在调用
    SESSION\u destroy()
    后也没有变得不可访问,那么当SESSION变量实例已经被
    SESSION\u unset()销毁时,它实际上销毁了什么

  • 谢谢。

    启动会话时,将生成会话ID并保存为cookie

    session\u destroy()
    将删除
    $\u session
    的数组,从而执行与
    session\u unset()
    相同的操作,但除此之外,它还将销毁会话ID。cookie将被清除

    从这一点上讲,您只能在使用
    SESSION\u start()
    启动会话后再次访问
    $\u SESSION
    变量SESSION\u unset()不会破坏会话,SESSION\u unset应在单个会话变量上使用

    session_unset($_SESSION['user_id']);
    
    session是否表示$\u session超级全局变量?

    根据php文档,不要在全局变量上使用session_unset[

    不要使用unset($\u会话)取消设置整个$\u会话,因为这将 禁用通过$\u会话注册会话变量 超全球

    当调用session\u destroy()时,超级全局变量$\u session是否也会被销毁并变得不可访问?

    不,它不会变得不可访问。使用会话\u destroy()销毁会话后,可以使用会话\u start()创建新会话

    如果超级全局变量$\u SESSION即使在调用SESSION\u destroy()之后也没有变得不可访问,那么当SESSION\u unset()已经销毁了会话变量实例时,它实际上销毁了什么?

    调用session_unset应用于删除单个会话变量,而不是销毁会话。使用session_unset后,会话仍处于活动状态,您可以从下面的测试中看到:

    <?php
        // This prints "Active"
        session_start();
        $_SESSION['user_id'] = 1000;
        session_unset($_SESSION['user_id']);
        if(session_status()==2)
            echo "Active \n";
    
    // hijack then destroy
    $session_id = session_id();
    session_id($session_id);
    session_start();
    session_destroy();
    session_commit();