萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP Session 完整操作指南:啟動、讀寫、銷毀與進階設定

Session 基本流程

  1. session_start():啟動/恢復會話,必須在任何輸出前呼叫
  2. $_SESSION['key'] = $value:寫入資料
  3. $_SESSION['key']:讀取資料
  4. unset($_SESSION['key']):刪除單一變數
  5. session_destroy():銷毀整個 Session(含檔案與 ID)

完整範例:三檔案示範

session.php - 設定 Session


next

session2.php - 讀取與檢測

del session';
} else {
    echo "Session has not been setted";
}
?>

deletesession.php - 完整銷毀

Session 核心函數對照表

函數用途回傳值
session_start()啟動/恢復會話true
session_id([$id])取得/設定 Session ID字串/bool
session_name([$name])取得/設定 Session 名稱 (預設 PHPSESSID)字串/bool
session_destroy()銷毀 Sessionbool
session_unset()釋放所有 $_SESSION 變數 (不結束會話)void
session_regenerate_id()產生新 Session ID (防固定攻擊)bool
session_encode()序列化 Session 資料字串
session_decode($data)反序列化 Session 資料bool
session_set_cookie_params()設定 Session Cookie 參數 (需在 start 前)bool

php.ini 關鍵設定

session.save_handler = files
session.save_path = "/tmp"           # 或 "N;/path" 分級目錄
session.gc_maxlifetime = 1440        # 垃圾回收壽命(秒)
session.gc_probability = 1
session.gc_divisor = 1000            # 機率 = 1/1000
session.cookie_lifetime = 0          # 0 = 瀏覽器關閉過期
session.use_cookies = 1
session.use_only_cookies = 1         # 防止 URL 傳遞 ID
session.use_strict_mode = 1          # 嚴格模式,拒絕未初始化 ID

常見問題

  • headers already sent:session_start() 前有輸出(空白、BOM、echo)
  • Session 不跨頁:檢查 Cookie 設定、Domain/Path、HTTPS Secure 標記
  • 並發阻塞:預設檔案鎖定,長時間請求會阻塞同 Session 其他請求,可用 session_write_close() 釋放鎖
copyright © 萬盛學電腦網 all rights reserved