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。这将破坏会话,而不仅仅是会话数据。