在PHP中有兩個非常相似的函數session_unset()和session_destroy(),它們兩者都是用於刪除註冊到會話的所有變量,那麼它們之間有什麼差異?以下這篇文章就來跟大家介紹一下session_unset()和session_destroy()的差別,希望對大家有幫助。 【影片教學推薦:PHP教學】
和session_destroy()的差別是什麼)
#session_unset()函數
session_unset()函數只刪除會話中的變量,會話仍然存在;它只會截斷資料。
基本語法:
session_destroy()函數session_destroy()
函數會銷毀與當前會話關聯的所有資料;但它不會取消設定與會話關聯的任何全域變量,也不會取消設定會話cookie。
基本語法:

相關專題推薦
:php session(包含圖文、影片、案例)
session_unset()和session_destroy()的差異

下面透過程式碼範例來看看session_unset()和session_destroy()的差異
首先使用session.php檔案儲存會話
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php
header( "content-type:text/html;charset=utf-8" );
session_start();
echo session_id();
if ( isset( $_SESSION ['name']) ) {
echo '<br>' . '会话还有效.';
}
else {
echo '<br>' . '会话已销毁';
}
$_SESSION ['name'] = 'PHP中文网!';
$_SESSION ['website'] = 'www.php.cn' ;
?>
|
登入後複製

輸出:
#範例1:使用session_unset()函數
在使用session_unset()函數之前,先會顯示name和website。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php
header( "content-type:text/html;charset=utf-8" );
session_start();
if ( isset( $_SESSION ['name']) ) {
echo '<br>' . '会话还有效'.'<br>';
}
else {
echo '<br>' . '会话已销毁';
}
echo $_SESSION ['name'].'<br>';
echo $_SESSION ['website'].'<br>';
?>
|
登入後複製

輸出:
使用session_unset()函數後,它破壞了正在使用的'name'和'website'之類的變數。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php
header( "content-type:text/html;charset=utf-8" );
session_start();
if ( isset( $_SESSION ['name']) ) {
echo '<br>' . '会话还有效'.'<br>';
}
else {
echo '<br>' . '会话已销毁';
}
echo $_SESSION ['name'].'<br>';
echo $_SESSION ['website'].'<br>';
session_unset();
?>
|
登入後複製
輸出:
範例2:使用session_destroy()函數
######session_destroy()函數會破壞整個會話而不是破壞變數。呼叫session_start()時,PHP會在瀏覽器中設定會話cookie。我們還需要刪除cookie以完全破壞會話。 ###
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <?php
header( "content-type:text/html;charset=utf-8" );
session_start();
if ( isset( $_SESSION ['name']) ) {
echo '<br>' . '会话还有效'.'<br>';
}
else {
echo '<br>' . '会话已销毁';
}
echo $_SESSION ['name'].'<br>';
echo $_SESSION ['website'].'<br>';
$_SESSION = array ();
if ( ini_get ( "session.use_cookies" )) {
$params = session_get_cookie_params();
setcookie(session_name(), '', 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中文網其他相關文章!