ThinkPHP實現將SESSION存入MYSQL的方法,thinkphpmysql
本文以執行個體講解了ThinkPHP實現將SESSION存入MYSQL的方法,所採用的運行環境是ThinkPHP3.1.2版
首先index.php中設定為:
<?phpdefine('APP_DEBUG', true);//設定為偵錯模式require '../ThinkPHP/ThinkPHP.php';//設定入口檔案ini_set("session.save_handler", "user");//設定PHP的SESSION由使用者定義
在config.php中設定為:
<?phpreturn 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儲存上面建立的資料庫中。
探討怎把session存入資料庫
建立資料庫和資料庫的表結構,我們可以採用php可以使用的任何的資料庫,因為php和mysql的結合最好,我就使用mysql來做案例,當然根據你的需要可以改稱別的資料庫,同時因為mysql沒有事物的功能,這也比別的資料庫更快,然而儲存session 書、一 不許要事物處理的,再者裡我決的更好。
建立資料庫:
複製代碼 代碼如下:CREATE DATABASE 'session'; 建立表結構 CREATE TABLE 'session'( id CHAR(30) NOT NULL , 'user 'CHAR(30), data CHAR(3000) ,PARMIRY BY ('id') );
下面我們來編寫儲存session的檔案session_start.php
複製代碼 代碼如下:$con =mysql_connection("127.0.0.1","user" , "pass");
mysql_select_db("session");
function open($save_path, $session_name){return(true);}function close(){return(true);}function read($id){if($result = mysql_query("SELECT * FROM session WHERE id='$id'")){if($row = mysql_felth_row($result ))
{ return $row["data"]; }}else{return "";}}function write($id, $sess_data){if($result = mysql_query("UPDATE session SET data='$sess_data' WHERE id='$id'")){return true;}else{return false;}}function destroy($id){if($result = mysql_query("DELETE * FROM session WHERE id='$id'")){return true;}else{return false;}}/*********************************************
* WARNING - You will need to implement some *
* sort of garbage collection routine here. *
*********************************************/
function gc($maxlifetime){return true;}session_set_save_handler("open", "close", "read", "write", "destroy", "gc");
session_start();
/&#......餘下全文>>
怎驗證存入資料庫的session_id?
在你背景公用模組裡面寫一個方法,該方法的作用就是將產生的session_id與資料庫的session_id比對,如果相同,說明已經登入,不過不同則沒有登入。然後在需要驗證登入的模組中調用該方法即可。
http://www.bkjia.com/PHPjc/844125.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/844125.htmlTechArticleThinkPHP實現將SESSION存入MYSQL的方法,thinkphpmysql 本文以執行個體講解了ThinkPHP實現將SESSION存入MYSQL的方法,所採用的運行環境是ThinkPHP3.1.2版 首先...