Session 在伺服器端儲存用戶資料,透過 Cookie 傳遞 Session ID 實現跨頁面狀態保持。每頁開頭必須呼叫 session_start()。
<?php
session_start();
$_SESSION['name'] = "zhang3";
echo "<a href='page2.php'>透過 Session 傳遞用戶 zhang3,顯示歡迎訊息</a>";
?>
<?php
session_start();
echo $_SESSION["name"] . " 歡迎你!" . "<a href='index.php'>返回</a>";
?>
| 操作 | 代碼 | 說明 |
|---|---|---|
| 啟動 | session_start() | 每頁必須最先呼叫,輸出前 |
| 寫入 | $_SESSION['key'] = $val | 陣列語法,支援多維 |
| 讀取 | $val = $_SESSION['key'] | 不存在返回 NULL |
| 檢查存在 | isset($_SESSION['key']) | 避免 Notice |
| 刪除單項 | unset($_SESSION['key']) | 仅移除該鍵 |
| 銷毀整個 Session | session_destroy() | 登出時使用,配合 $_SESSION = array() |
| 設定存活時間 | ini_set('session.gc_maxlifetime', 3600) | 秒數,需在 session_start() 前 |
session_regenerate_id(true) 登入後重新生成 ID,防 Session Fixation。session.cookie_secure = 1、session.cookie_httponly = 1。session_set_save_handler)將 Session 存入 Redis/Memcached/DB,支援叢集。