首頁  >  文章  >  後端開發  >  PHP中session_unset()和session_destroy()的差別是什麼

PHP中session_unset()和session_destroy()的差別是什麼

青灯夜游
青灯夜游原創
2019-03-15 10:34:414864瀏覽

在PHP中有兩個非常相似的函數session_unset()和session_destroy(),它們兩者都是用於刪除註冊到會話的所有變量,那麼它們之間有什麼差異?以下這篇文章就來跟大家介紹一下session_unset()和session_destroy()的差別,希望對大家有幫助。 【影片教學推薦:PHP教學

PHP中session_unset()和session_destroy()的差別是什麼

#session_unset()函數

session_unset()函數只刪除會話中的變量,會話仍然存在;它只會截斷資料。

基本語法:

session_unset( void )
session_destroy()函數

session_destroy()
函數會銷毀與當前會話關聯的所有資料;但它不會取消設定與會話關聯的任何全域變量,也不會取消設定會話cookie。

基本語法:

session_destroy( void )

PHP中session_unset()和session_destroy()的差別是什麼

相關專題推薦

php session(包含圖文、影片、案例)

session_unset()和session_destroy()的差異

PHP中session_unset()和session_destroy()的差別是什麼

下面透過程式碼範例來看看session_unset()和session_destroy()的差異

首先使用session.php檔案儲存會話

<?php 
header("content-type:text/html;charset=utf-8");
// 启动会话
session_start(); 
  
//显示会话ID
echo session_id(); 
  
// 检查会话名称是否存在
if( isset($_SESSION[&#39;name&#39;]) ) { 
    echo &#39;<br>&#39; . &#39;会话还有效.&#39;; 
} 
else { 
    echo &#39;<br>&#39; . &#39;会话已销毁&#39;; 
} 
  
$_SESSION[&#39;name&#39;] = &#39;PHP中文网!&#39;; 
$_SESSION[&#39;website&#39;] = &#39;www.php.cn&#39; ; 
  
?>
PHP中session_unset()和session_destroy()的差別是什麼輸出:

#範例1:使用session_unset()函數

在使用session_unset()函數之前,先會顯示name和website。

<?php 
header("content-type:text/html;charset=utf-8");
// 启动会话
session_start(); 
  
// 检查会话名称是否存在
if( isset($_SESSION[&#39;name&#39;]) ) { 
    echo &#39;<br>&#39; . &#39;会话还有效&#39;.&#39;<br>&#39;; 
} 
else { 
    echo &#39;<br>&#39; . &#39;会话已销毁&#39;; 
} 
echo $_SESSION[&#39;name&#39;].&#39;<br>&#39;; 
echo $_SESSION[&#39;website&#39;].&#39;<br>&#39;; 
  
?>
PHP中session_unset()和session_destroy()的差別是什麼輸出:

PHP中session_unset()和session_destroy()的差別是什麼使用session_unset()函數後,它破壞了正在使用的'name'和'website'之類的變數。

<?php 
header("content-type:text/html;charset=utf-8");
// 启动会话
session_start(); 
  
// 检查会话名称是否存在
if( isset($_SESSION[&#39;name&#39;]) ) { 
    echo &#39;<br>&#39; . &#39;会话还有效&#39;.&#39;<br>&#39;; 
} 
else { 
    echo &#39;<br>&#39; . &#39;会话已销毁&#39;; 
} 
echo $_SESSION[&#39;name&#39;].&#39;<br>&#39;; 
echo $_SESSION[&#39;website&#39;].&#39;<br>&#39;; 
// 使用session_unset()函数
session_unset(); 
?>

輸出:

範例2:使用session_destroy()函數
######session_destroy()函數會破壞整個會話而不是破壞變數。呼叫session_start()時,PHP會在瀏覽器中設定會話cookie。我們還需要刪除cookie以完全破壞會話。 ###
<?php 
header("content-type:text/html;charset=utf-8");
// 启动会话
session_start(); 
  
// 检查会话名称是否存在
if( isset($_SESSION[&#39;name&#39;]) ) { 
    echo &#39;<br>&#39; . &#39;会话还有效&#39;.&#39;<br>&#39;; 
} 
else { 
    echo &#39;<br>&#39; . &#39;会话已销毁&#39;; 
} 
  
echo $_SESSION[&#39;name&#39;].&#39;<br>&#39;; 
echo $_SESSION[&#39;website&#39;].&#39;<br>&#39;; 
  
$_SESSION = array(); 
  
// 如果想要终止会话,需要删除会话cookie。
// 注意:这将破坏会话,而不仅仅是会话数据!
if (ini_get("session.use_cookies")) { 
    $params = session_get_cookie_params(); 
    setcookie(session_name(), &#39;&#39;, time() - 42000, 
        $params["path"], $params["domain"], 
        $params["secure"], $params["httponly"] 
    ); 
} 
  
// 最后,销毁会话。
session_destroy(); 
  
?>
###輸出:###############說明:執行echo session_id();語句時,可以看到有一個不同的會話ID,這表示上一個會話已被銷毀,所有變數和cookie也已銷毀。因為所有變數都被破壞了,所以當偵測會話是否存在時會轉到else條件輸出'會話已銷毀'。 ###############註:如果希望終止會話,也請刪除會話cookie。這將破壞會話,而不僅僅是會話資料。 #########相關學習推薦:###PHP程式設計從入門到精通##########

以上是PHP中session_unset()和session_destroy()的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn