php中如何刪除和銷毀Session


當使用完一個 Session 變量后,可以將其刪除;當完成一個會話以后,也可以將其銷毀。如果用戶想退出 Web 系統,就需要為他提供一個注銷的功能,把他的所有信息在服務器中銷毀。

 

刪除會話的主要有刪除單個會話、刪除多個會話和結束當前會話有3種方式,下面就3種方式分別作一個簡單的介紹。直線電機生產廠家

(1)刪除單個會話

刪除單個會話即刪除單個會話的變量、同數組的操作一樣,直接注銷 $_SESSION 數組 的某個元素即可。

例如: $_SESSION['user']變量,可以使用 unset()函數,代碼如下所示:

1

unset( $_SESSION['user']);

注意: 使用 unset()函數時,要注意 $_SESSION 數組中元素不能省略,即不可以一次注銷整個數組,這樣會禁止整個會話的功能,如 unset($_SESSION)函數會將全局變量 $_SESSION 銷毀,而且沒有辦法將其回復,用戶也不能再注冊 $_SESSION 變量。

如果要刪除多個或者全部會話,可采用下面的兩種方法。

(2)刪除多個會話

如果想把某個用戶在 Session 中注冊的所有變量都刪除,也就是刪除多個會話即一次注銷所有的會話變量,可以通過將一個空的數組賦值給 $_SESSION來實現,其代碼顯示如下:

1

$_SESSION = array();

(3)結束當前會話

如果整個會話已經結束,首先應該注銷所有會話變量,然后使用 session_destroy()函數清除結束當前的會話,並清空會話中的所有資源,徹底銷毀Session,其代碼如下顯示:

1

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代碼如下所示:

1

2

3

4

5

6

7

8

9

10

11

12

<?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 文件刪除。https://www.furuihua.cn/product/416.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM