每個客戶端(瀏覽器)擁有獨立的 Session,互不干擾,不會發生覆蓋。
PHPSESSID、Java 的 JSESSIONID)。$_SESSION['name'])儲存在伺服器記憶體、檔案、Redis 或資料庫中,以 Session ID 為鍵。| 用戶 | Session ID | 伺服器端儲存結構 |
|---|---|---|
| 用戶 A(先登入) | abc123 | sessions['abc123']['name'] = 'Alice' |
| 用戶 B(後登入) | xyz789 | sessions['xyz789']['name'] = 'Bob' |
兩者 Session ID 不同,對應的儲存空間完全隔離。用戶 B 的登入操作只會建立/修改 xyz789 下的資料,絕不會觸及 abc123。
極少數場景(如線上人數統計、全站公告已讀狀態)需共享資料,可採用:
global:announcement_read)存取,效能最佳。切勿 嘗試用同一個 Session ID 服務多用戶,會導致嚴重的安全與邏輯錯誤。
session_regenerate_id(true)),防 Session Fixation 攻擊。session_destroy())並清除 Cookie。session.gc_maxlifetime 及 Cookie HttpOnly、Secure 標誌。Session 是「伺服器端狀態」配合「客戶端憑證」的機制。理解「Session ID 隔離」這一核心,即可釐清多用戶環境下的資料流向,避免誤以為會互相覆蓋。