php中刪除和銷毀Session的方法:使用完一個Session 變數後,可以將其刪除;當完成一個回話以後,也可以將其銷毀,如果使用者想退出Web 系統,就需要為他提供一個註銷的功能,把它的所有在伺服器中銷毀。
刪除會話的主要有刪除單一會話、刪除多個會話和結束目前會話有3種方式,以下就3種方式分別作一個簡單的介紹。
(1)刪除單一會話
刪除單一會話即刪除單一會話的變數、同陣列的操作一樣,直接登出$_SESSION 陣列的某個元素即可。
例如: $_SESSION['user']變量,可以使用unset()函數,程式碼如下所示:
unset( $_SESSION['user']);
注意: 使用unset()函數時,要注意 $_SESSION 數組中元素不能省略,即不可以一次註銷整個數組,這樣會禁止整個會話的功能,如unset($_SESSION)函數會將全域變數$_SESSION 銷毀,而且沒有辦法將其回复,用戶也不能再註冊$_SESSION變數。
如果要刪除多個或全部會話,可採用下面的兩種方法。
(2)刪除多個會話
如果想把某個使用者在Session 中註冊的所有變數都刪除,也就是刪除多個會話即一次登出所有的會話變量,可以透過將一個空的數組賦值給 $_SESSION來實現,其程式碼顯示如下:
$_SESSION = array();
(3)結束目前會話
如果整個會話已經結束,首先應該註銷所有會話變量,然後使用 session_destroy()函數清除結束目前的會話,並清空會話中的所有資源,徹底銷毀Session,其程式碼如下顯示:
session_destroy();
相對於session_start()
函數(建立Session 檔案),session_destroy()函數用來關閉Session 的運作(刪除Session 檔案),如果成功則回傳TURE,則銷毀 Session 資料失敗則傳回FALSE。但函數並不會釋放和目前 Session 相關的變量,也不會刪除儲存在客戶端 Cookie 中的 Session ID 。
PHP預設的Session 是基於Cookie的,Session ID 被伺服器儲存在客戶端的Cookie 中,所以在登出Session 時也需要清除Cookie 中儲存的Session ID,而這就必須藉助setcookie() 函數來完成。 在 Cookie 中,保存 Session ID 的 Cookie 識別名稱就是 Session 的名稱,這個名稱是在 php.ini中,透過 session.name 屬性指定的值。在php腳本中,可以透過 session_name() 函數取得 Session 的名稱。 刪除儲存在客戶端 Cookie 中的 Session ID。
前面的講解可以總結出 Session 的刪除和登出過程需要好幾個步驟。以下將透過一個實例,提供完整的程式碼,執行該腳本後就可以關閉 Session,並銷毀與本次會話相關的所有資源。
徹底銷毀Session程式碼如下所示:
<?php //开启 Session session_start(); // 删除所有 Session 变量 $_SESSION = array(); //判断 cookie 中是否保存 Session ID if(isset($_COOKIE[session_name()])){ setcookie(session_name(),'',time()-3600, '/'); } //彻底销毁 Session session_destroy(); ?>
注意:使用 $_SESSION = array()
清空#$_SESSION
陣列的同時,也將這個使用者在伺服器端對應的 Session 檔案內容清空。而使用 session_destroy()
函數時,則是將這個使用者在伺服器端對應的 Session 檔案刪除。
相關專題推薦:php session (包含圖文、影片、案例)
以上是php中如何刪除和銷毀Session的詳細內容。更多資訊請關注PHP中文網其他相關文章!