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

CodeIgniter Session 庫完整使用指南:配置、存儲、數據庫與安全

     編輯:PHP 綜合知識

CodeIgniter 提供功能豐富的 Session 庫,支持文件、數據庫多種存儲驅動,內置加密、指紋驗證、垃圾回收等安全機制。本文詳解配置與使用全流程。

環境配置三步走

1. 設置加密密鑰

編輯 application/config/config.php:

$config['encryption_key'] = 'your_random_string_here';  // 必填,不能為空

2. 自動加載 Session 庫

編輯 application/config/autoload.php:

$autoload['libraries'] = array('session');

或在控制器構造函數中手動加載:

$this->load->library('session');

核心操作 API

設置數據

// 單值設置
$this->session->set_userdata('name', 'yang');

// 批量設置(關聯數組)
$newdata = array(
    'username'  => 'johndoe',
    'email'     => 'johndoe@some-site.com',
    'logged_in' => TRUE
);
$this->session->set_userdata($newdata);

讀取數據

$name = $this->session->userdata('name');  // 返回值或 FALSE
$session_id = $this->session->userdata('session_id');

刪除數據

// 刪除單項
$this->session->unset_userdata('some_name');

// 批量刪除
$items = array('username' => '', 'email' => '');
$this->session->unset_userdata($items);

銷毀 Session

$this->session->sess_destroy();

Session 工作原理

  • 頁面載入自動初始化,檢查 Cookie 中 session_id
  • 不存在或過期 → 創建新 session,寫入 Cookie
  • 存在 → 更新活動時間,必要時重新生成 session_id(默認 5 分鐘一次)
  • 數據序列化存儲:session_id、IP、User Agent、最後活動時間

數據庫存儲配置

1. 創建數據表

CREATE TABLE IF NOT EXISTS `ci_sessions` (
    session_id varchar(40) DEFAULT '0' NOT NULL,
    ip_address varchar(16) DEFAULT '0' NOT NULL,
    user_agent varchar(50) NOT NULL,
    last_activity int(10) unsigned DEFAULT 0 NOT NULL,
    user_data text DEFAULT '' NOT NULL,
    PRIMARY KEY (session_id)
);

2. 啟用數據庫驅動

$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';

關鍵配置參數速查

參數默認值說明
sess_cookie_nameci_sessionCookie 名稱
sess_expiration7200 (2小時)Session 生命周期(秒),0為永久
sess_expire_on_closeFALSE瀏覽器關閉時是否過期
sess_encrypt_cookieFALSE是否加密 Cookie 數據
sess_match_ipFALSE驗證 IP(動態 IP 環境建議關閉)
sess_match_useragentTRUE驗證 User Agent
sess_time_to_update300Session ID 重新生成間隔(秒)

最佳實踐提醒

  • Cookie 容量限制 4KB,加密後數據更大,謹慎存儲大量數據
  • 敏感數據建議啟用 sess_encrypt_cookie 和數據庫存儲
  • 分布式環境必須使用數據庫/Redis 共享存儲
  • 定期清理過期數據(CI 內置垃圾回收機制)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved