首頁  >  文章  >  後端開發  >  php中如何刪除和銷毀Session

php中如何刪除和銷毀Session

PHPz
PHPz原創
2017-04-26 14:32:2119449瀏覽

php中刪除和銷毀Session的方法:使用完一個Session 變數後,可以將其刪除;當完成一個回話以後,也可以將其銷毀,如果使用者想退出Web 系統,就需要為他提供一個註銷的功能,把它的所有在伺服器中銷毀。

php中如何刪除和銷毀Session

刪除會話的主要有刪除單一會話、刪除多個會話和結束目前會話有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(),&#39;&#39;,time()-3600, &#39;/&#39;);
  }
  //彻底销毁 Session
  session_destroy();
?>

注意:使用 $_SESSION = array() 清空#$_SESSION陣列的同時,也將這個使用者在伺服器端對應的 Session 檔案內容清空。而使用  session_destroy()函數時,則是將這個使用者在伺服器端對應的 Session 檔案刪除。

相關專題推薦php session (包含圖文、影片、案例)

以上是php中如何刪除和銷毀Session的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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