有两个非常相似的PHP函数session_destroy()和session_unset()。两者似乎都删除了已注册到会话的所有变量,但是它们之间存在差异。
session_destroy()函数:销毁与当前会话关联的所有数据。它不会取消设置与该会话关联的任何全局变量,也不会取消设置会话cookie。
用法:
bool session_destroy( void )
session_unset()函数:它仅从会话中删除变量,并且会话仍然存在。仅数据被截断。
用法:
bool session_unset( void )
范例1:本示例使用session.php文件保存会话。
<?php
// Function to start session
session_start();
// Display the session id
echo session_id();
// Check the session name exists or not
if( isset($_SESSION['name']) ) {
echo '<br>' . 'session is set.';
}
else {
echo '<br>' . 'session is destroyed';
}
$_SESSION['name'] = 'GeeksForGeeks';
$_SESSION['email'] = 'GeeksForGeeks@email.com' ;
?>
输出:
使用session_unset()函数之前:使用会话函数之前,它将显示名称和电子邮件。
<?php
// Function to start session
session_start();
// Check the session name exists or not
if( isset($_SESSION['name']) ) {
echo 'session is set.';
}
else {
echo 'please set the session';
}
echo $_SESSION['name'].'<br>';
echo $_SESSION['email'].'<br>';
?>
输出:
使用session_unset()函数后:此函数会破坏正在使用的变量,例如“名称”和“电子邮件”。
<?php
// Function to start session
session_start();
// Check the session name exists or not
if( isset($_SESSION['name']) ) {
echo 'session is set.' ;
}
else {
echo 'session variables deleted';
}
echo $_SESSION['name'];
echo $_SESSION['email'];
// Use session_unset() function
session_unset();
?>
输出:
session_destroy()函数:它破坏整个会话,而不是破坏变量。调用session_start()时,PHP在浏览器中设置会话cookie。我们还需要删除cookie,以完全销毁会话。
例:此示例用于销毁会话。
<?php
// Function to start session
session_start();
// Check the session name exists or not
if( isset($_SESSION['name']) ) {
echo 'session is set.'.'<br>' ;
}
else {
echo 'session is destroyed'.'<br>';
}
echo $_SESSION['name'].'<br>';
echo $_SESSION['email'].'<br>';
$_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();
?>
输出:
执行session.php文件,您可以看到存在另一个会话ID,这意味着上一个会话已被破坏,所有变量和cookie也被破坏。由于所有变量均已销毁,因此PHP转至其他条件输出“会话已销毁”。
注意:如果希望终止会话,请同时删除会话Cookie。这将破坏会话,而不仅仅是会话数据。
相关用法
- node.js process.debugPort用法及代码示例
- node.js process.release用法及代码示例
- node.js process.execPath用法及代码示例
- node.js Stream writable.writableLength用法及代码示例
- node.js Stream writable.cork()用法及代码示例
注:本文由纯净天空筛选整理自ashishsaini3大神的英文原创作品 session_unset() vs session_destroy() in PHP。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。