PHP $_SESSION 超全域陣列用於跨請求保存使用者狀態。必須在輸出前呼叫 session_start()。
<?php session_start(); // 寫入 $_SESSION["sitename"] = "W3M"; $_SESSION["MyChoice"] = "red"; // 讀取 echo $_SESSION['sitename'] . "\n"; // W3M echo $_SESSION['MyChoice'] . "\n"; // red // 刪除單一變數 unset($_SESSION["MyChoice"]); // 銷毀整個 Session session_destroy(); ?>
session_start():檢查 Cookie 中 PHPSESSID,載入對應儲存檔| 設定 | 預設 | 建議 |
|---|---|---|
| session.save_handler | files | Redis/Memcached (分散式) |
| session.gc_maxlifetime | 1440 (秒) | 視業務調整 |
| session.cookie_httponly | Off | On (防 XSS 竊取) |
| session.cookie_secure | Off | On (僅 HTTPS) |
| session.use_strict_mode | Off | On (防 Session Fixation) |
session_regenerate_id(true)$_SESSION['user_id'] 存在session_destroy() + setcookie('PHPSESSID', '', time()-3600)$_SESSION['user'] = ['id'=>1, 'name'=>'Tom', 'roles'=>['admin']]; // 物件需實作 __sleep/__wakeup 或 Serializable $_SESSION['cart'] = new Cart();
善用 Session 管理使用者狀態,注意安全設定與分散式部署時的儲存處理器切換。