📜  PHP的session_unset() 与 session_destroy()

📅  最后修改于: 2022-05-13 01:54:11.439000             🧑  作者: Mango

PHP的session_unset() 与 session_destroy()

有两个非常相似的PHP函数session_destroy() 和 session_unset()。两者似乎都删除了注册到会话的所有变量,但它们之间存在差异。

session_destroy()函数:它销毁与当前会话相关的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话 cookie。

句法:

bool session_destroy( void )

session_unset()函数:它只删除会话中的变量并且会话仍然存在。只有数据被截断。

句法:



bool session_unset( void )

示例 1:本示例使用session.保存会话。 PHP文件。

' . 'session is set.';
}
else {
    echo '
' . 'session is destroyed'; }    $_SESSION['name'] = 'GeeksForGeeks'; $_SESSION['email'] = 'GeeksForGeeks@email.com' ;    ?>

输出:

在使用 session_unset()函数之前在使用 session函数之前,它会显示姓名和电子邮件。

';
echo $_SESSION['email'].'
';    ?>

输出:

使用 session_unset()函数:此函数会破坏正在使用的变量,如“name”和“email”。


输出:

session_destroy()函数:它会破坏整个会话而不是破坏变量。当 session_start() 被调用时, PHP在浏览器中设置会话 cookie。我们还需要删除 cookie 以完全破坏会话。

示例:本示例用于销毁会话。

' ;
}
else {
    echo 'session is destroyed'.'
'; }    echo $_SESSION['name'].'
'; echo $_SESSION['email'].'
';    $_SESSION = array();    // If it's desired to kill the session, also // delete the session cookie. // Note: This will destroy the session, and // not just the session data! if (ini_get("session.use_cookies")) {     $params = session_get_cookie_params();     setcookie(session_name(), '', time() - 42000,         $params["path"], $params["domain"],         $params["secure"], $params["httponly"]     ); }    // Finally, destroy the session. session_destroy();    ?>

输出:

会话的执行。在 PHP文件中,您可以看到有一个不同的会话 ID,这意味着前一个会话已被破坏,所有变量和 cookie 也已被破坏。由于所有变量都被破坏,所以PHP转到其他条件输出“会话被破坏”。

注意:如果需要终止会话,请同时删除会话 cookie。这将破坏会话,而不仅仅是会话数据。