有兩個非常相似的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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。