在PHP中有兩個非常相似的函數session_unset()和session_destroy(),它們兩者都是用於刪除註冊到會話的所有變量,那麼它們之間有什麼差異?以下這篇文章就來跟大家介紹一下session_unset()和session_destroy()的差別,希望對大家有幫助。 【影片教學推薦:PHP教學】
#session_unset()函數
基本語法:session_unset()函數只刪除會話中的變量,會話仍然存在;它只會截斷資料。
session_unset( void )session_destroy()函數
session_destroy()
函數會銷毀與當前會話關聯的所有資料;但它不會取消設定與會話關聯的任何全域變量,也不會取消設定會話cookie。
基本語法:
session_destroy( void )相關專題推薦
:php session(包含圖文、影片、案例)
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['name']) ) { echo '<br>' . '会话还有效.'; } else { echo '<br>' . '会话已销毁'; } $_SESSION['name'] = 'PHP中文网!'; $_SESSION['website'] = 'www.php.cn' ; ?>輸出:
#範例1:使用session_unset()函數
在使用session_unset()函數之前,先會顯示name和website。<?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'之類的變數。
<?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()函数 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['name']) ) { echo '<br>' . '会话还有效'.'<br>'; } else { echo '<br>' . '会话已销毁'; } echo $_SESSION['name'].'<br>'; echo $_SESSION['website'].'<br>'; $_SESSION = array(); // 如果想要终止会话,需要删除会话cookie。 // 注意:这将破坏会话,而不仅仅是会话数据! 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中文網其他相關文章!