Session 是一種客戶端與網站服務器之間更為安全的交互方式。一旦使用了 session 會話,便可以在網站的任何頁面使用,從而讓訪問者與網站之間建立了一種“對話”機制。

Session 其實就是一個數組Array(),它的開始和結束并不以網站上登錄開始,也不以關閉瀏覽器和網頁刷新而結束。

今天我們就來說一說幾種關于php中 session 刪除或清空的幾種方法

php中刪除、清空session的幾種方法

php刪除單個session會話

国产视频app由于 Session 是以數組的形式來表示的,所以在刪除單個變量時,就像操作刪除數組中某個元素一樣。

国产视频app例如$_SESSION['user'] 為要銷毀的 Session 變量,我們可以使用 unset() 函數來銷毀它

代碼:

<?php
//創建 session
session_start();
//方法1,先判斷后刪除
if(isset($_SESSION['user'])){
    unset($_SESSION['user']);
}
//方法2,直接刪除
unset($_SESSION['user']);
//方法3,不推薦
$_SESSION['user'] = null;  
?>

注意:

使用 unset() 函數時,只能銷毀 Session 中單一變量,不可以一次注銷整個數組,這樣會禁止整個會話的功能,如 unset($_SESSION) 函數會將全局變量 $_SESSION 銷毀,而且沒有辦法將其恢復,用戶也不能再注冊 $_SESSION 變量。

php刪除/清空多個session會話

1、賦值一個空的數組

如果想把某個用戶在 Session 中注冊的所有變量都刪除,即一次刪除所有的會話變量,可以通過將一個空的數組賦值給 $_SESSION 來實現,

代碼:

<?php
//創建 session
session_start();
$_SESSION = array();
?>

注意:使用 $_SESSION = array() 清空 $_SESSION 數組的同時,也將這個用戶在服務器端對應的 Session 文件內容清空

2、使用 session_unset()

session_unset():釋放當前在內存中已經創建的所有 $_SESSION 變量,但不刪除 Session 文件以及不釋放對應的session id

代碼:

<?php
//創建 session
session_start();
session_unset();
?>

session_unset() 函數并不注銷 session 變量,但把所有的 session 變量的值清空。

php徹底銷毀Session

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

<?php
session_destroy();
?>

session_start() 函數用來創建 Session 文件,而 session_destroy() 函數用來關閉 Session 的運作并刪除 Session 文件,成功則返回 TURE,失敗則返回 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。

php徹底銷毀 Session 完整代碼如下

<?php
//飛鳥慕魚博客
//開啟 Session
session_start();
// 刪除所有 Session 變量
$_SESSION = array();
//判斷 cookie 中是否保存 Session ID
if(isset($_COOKIE[session_name()])){
    setcookie(session_name(),'',time()-3600, '/');
}
//徹底銷毀 Session
session_destroy();
?>

注意:

1、$_SESSION = array() 清空 $_SESSION 數組的同時,也將這個用戶在服務器端對應的 Session 文件內容清空,并不刪除文件

2、session_destroy() 函數,會將這個用戶在服務器端對應的 Session 文件刪除。