首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Yii 框架 Session 操作完整指南

     編輯:PHP 相關知識

Yii 框架 Session 操作完整指南

Yii 框架對 PHP 原生 Session 進行了封裝,提供更安全、便捷的操作方式。本文系統梳理 Session 的基本用法、配置選項、資料庫存儲及登出清理等核心知識點。

一、與原生 PHP 的差異

Yii 預設啟用 autoStart = true,因此無需手動呼叫 session_start()。雖然仍可直接使用 $_SESSION 超全域變數,但官方強烈建議使用 Yii::app()->session 元件,以獲得統一的介面與安全防護。

二、基本讀寫操作

// 設定
Yii::app()->session['var'] = 'value';

// 讀取
echo Yii::app()->session['var'];

// 刪除單個鍵
unset(Yii::app()->session['var']);

三、進階配置(在 protected/config/main.php 的 components 區段)

'session' => array(
    'autoStart' => true,           // 是否自動啟動
    'sessionName' => 'SiteAccess', // Cookie 名稱
    'cookieMode' => 'only',        // 僅透過 Cookie 傳遞 Session ID
    'savePath' => '/path/to/dir',  // 自訂儲存路徑
),

四、將 Session 存入資料庫

使用 CDbHttpSession 類別,需指定資料庫連線與資料表名:

'session' => array(
    'class' => 'system.web.CDbHttpSession',
    'connectionID' => 'db',
    'sessionTableName' => 'actual_table_name',
),

五、常用工具屬性與方法

  • Yii::app()->session->sessionID:取得當前 Session ID,便於除錯。
  • Yii::app()->session->clear():清除所有 Session 變數。
  • Yii::app()->session->destroy():銷毀伺服器端 Session 資料(登出時建議先 clear() 再 destroy())。

六、常見問題 FAQ

Session 過期時間在哪裡設定?
在 main.php 設定 'sessionTimeoutSeconds'=>300,再於程式中呼叫 Yii::app()->user->setState('userSessionTimeout', time()+Yii::app()->params['sessionTimeoutSeconds'])。
Session 不是直接用就好嗎?
預設情況下確實可直接使用,但生產環境建議依需求調整儲存方式、Cookie 參數等配置。

合理運用 Yii Session 元件,能有效提升應用的安全性與可維護性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved