本文以實例講解了ThinkPHP實現將SESSION存入MYSQL的方法,所采用的運行環境是ThinkPHP3.1.2版
首先index.php中設置為:
<?php define('APP_DEBUG', true);//設置為調試模式 require '../ThinkPHP/ThinkPHP.php';//設置入口文件 ini_set("session.save_handler", "user");//設置PHP的SESSION由用戶定義
在config.php中設置為:
<?php return array(//'配置項'=>'配置值' // 添加數據庫配置信 'SHOW_PAGE_TRACE' =>true, 'DB_TYPE' => 'mysql', // 數據庫類型 'DB_HOST' => 'localhost', // 服務器地址 'DB_NAME' => 'thinkphp', // 數據庫名 'DB_USER' => '你的用戶名', // 用戶名 'DB_PWD' => '你的密碼', // 密碼 'DB_PORT' => 3306, // 端口 'DB_PREFIX' => 'think_', // 數據庫表前綴綴 'SESSION_OPTIONS'=>array( 'type'=> 'db',//session采用數據庫保存 'expire'=>1440,//session過期時間,如果不設就是php.ini中設置的默認值 ), 'SESSION_TABLE'=>'think_session', //必須設置成這樣,如果不加前綴就找不到數據表,這個需要注意 ); ?>
數據庫設置采用SessionDb.class.php中的DDL,不過後面加了ENGINE=MyISAM DEFAULT CHARSET=utf8
CREATE TABLE think_session ( session_id varchar(255) NOT NULL, session_expire int(11) NOT NULL, session_data blob, UNIQUE KEY `session_id` (`session_id`) )ENGINE=MyISAM DEFAULT CHARSET=utf8;
現在訪問你的 index.php 後再在 phpmyadmin 中找到 think_session 表,我們會驚喜的發現多了條數據。
至此問題搞定。其他不要設置了,SessionDb.class.php會自動加載.
這樣ThinkPHP的調用
session('session_name','session_value')
系統就會自動把這個session存儲上面創建的數據庫中。