首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP Session 變量銷毀完全指南:unset、destroy 最佳實踐

     編輯:PHP 綜合知識

什麼是 Session?

Session 相當於一個客戶端(瀏覽器、App、FTP 等)對服務器的一次訪問會話。服務器為此建立唯一標識(session_id),本質是一個數組 $_SESSION。Session 的開始和結束不以業務登錄為準,也不因關閉瀏覽器或刷新頁面而結束。

核心銷毀函數對比

函數作用影響範圍
session_unset()釋放內存中所有 $_SESSION 變量不刪除 session 文件,不釋放 session_id
session_destroy()刪除 session 文件並釋放 session_id內存中 $_SESSION 內容保留
unset($_SESSION['xxx'])刪除單個 session 變量僅影響指定鍵
$_SESSION = array()清空所有 session 變量重置整個數組

⚠️ 關鍵注意事項

  • 絕對不要使用 unset($_SESSION) — 會銷毀全局變量,無法恢復,導致無法再註冊 session 變量。
  • session_unset() 在 PHP5+ 中已失效(因必須使用 $_SESSION),可棄用。
  • session_destroy() 不會刪除客戶端 Cookie,需配合 setcookie() 手動刪除。

推薦的完整銷毀流程

<?php
// 1. 啟動會話(必須)
session_start();

// 2. 清空數據(二選一)
$_SESSION = array();        // 清空所有
// unset($_SESSION['xxx']); // 或刪除單個

// 3. 銷毀會話文件與 ID
session_destroy();

// 4. (可選) 刪除客戶端 Cookie
if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
    );
}

常見場景:退出登錄

<?php
session_start();
session_destroy();
// 頁面跳轉
echo '<script>alert("已退出登錄"); location.href="login.php";</script>';

框架頁面注意:若在 iframe 中,需用 parent.location.href 實現頂層跳轉。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved