当前位置: 首页>>代码示例>>用法及示例精选>>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文的传播和使用请遵循“署名-相同方式共享 4.0 国际 (CC BY-SA 4.0)”协议。