刪除會話的主要有刪除單個會話、刪除多個會話和結束當前會話有3種方式,下面就3種方式分別作一個簡單的介紹。
(1)刪除單個會話
刪除單個會話即刪除單個會話的變量、同數組的操作一樣,直接注銷 $_SESSION 數組 的某個元素即可。
例如: $_SESSION['user']變量,可以使用 unset()函數,代碼如下所示:
unset( $_SESSION['user']);
注意: 使用 unset()函數時,要注意 $_SESSION 數組中元素不能省略,即不可以一次注銷整個數組,這樣會禁止整個會話的功能,如 unset($_SESSION)函數會將html' target='_blank'>全局變量 $_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的詳細內容,更多請關注 其它相關文章!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答