萬盛學電腦網

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

CakePHP Session 完整配置指南:三種儲存驅動與 Component 方法速查

三種 Session 儲存方式

在 app/Config/core.php 中設定 Configure::write('Session.save', ...):

值說明適用場景
'cake'儲存於 app/tmp/sessions/ 檔案單機、簡單部署
'php'使用 PHP 原生 session.save_path預設、共享儲存(如 NFS)
'database'序列化存入資料表叢集、需持久化、跨伺服器共享

資料庫儲存設定步驟

  1. 執行 app/Config/sql/sessions.sql 建立 cake_sessions 表。
  2. core.php 設定:
Configure::write('Session.save', 'database');
Configure::write('Session.model', 'Session'); // 對應模型名
Configure::write('Session.database', 'default'); // 使用的資料庫連線

SessionComponent 常用方法速查

所有 Controller 預設可用 $this->Session。

方法用途
check($name)檢查 Session 是否存在鍵值
read($name)讀取指定鍵值
write($name, $value)寫入鍵值
delete($name) / del()刪除指定鍵值
setFlash($msg, $layout='default', $params=[], $key='flash')寫入一次性提示訊息
flash($key='flash')讀取並刪除一次性提示
renew()重新生成 Session ID,避免固定攻擊
valid()檢查 Session 是否有效(建議 read() 前呼叫)
error()取得最近錯誤,供除錯用

Flash 訊息佈局說明

  • $layout = 'default':輸出 <div id="flashMessage">$msg</div>
  • $layout = '':直接輸出原始訊息
  • 其他值:視為 View 元素名稱,渲染 app/View/Elements/{$layout}.ctp

最佳實踐建議

  • 叢集環境務必使用 database 或 memcached/redis(需額外擴充套件)儲存 Session。
  • 定期清理過期 Session 記錄,避免資料表膨脹。
  • 敏感資料勿直接存入 Session,僅存識別碼,實際資料放快取/資料庫。
copyright © 萬盛學電腦網 all rights reserved