當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


PHP session_unset() vs session_destroy()用法及代碼示例


有兩個非常相似的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。這將破壞會話,而不僅僅是會話數據。



相關用法


注:本文由純淨天空篩選整理自ashishsaini3大神的英文原創作品 session_unset() vs session_destroy() in PHP。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。