- CREATE TABLE `db_session` (
- `sesskey` char(32) NOT NULL,
- `expiry` int(11) unsigned NOT NULL,
- `value` text NOT NULL,
- PRIMARY KEY (`sesskey`)
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
複製代碼資料庫表明:db_session列名:sesskey,expiry,value 其中:sesskey為主鍵。Value裡面存放著session裡面的值。 3.建立session_mysql.php檔案。這個檔案是用來構造儲存session的方法的。修改一下參數直接使用就可以了。session_mysql.phpphp代碼:
- $gb_DBname="db_myBBS";//資料庫名稱
- $gb_DBuser="root";//資料庫使用者名稱稱
- $gb_DBpass="23928484";//資料庫密碼
- $gb_DBHOSTname="localhost";//主機的名稱或是IP地址
- $SESS_DBH="";
- $SESS_LIFE=get_cfg_var("session.gc_maxlifetime");//得到session的最大有效期間。
- function sess_open($save_path,$session_name){
- global $gb_DBHOSTname,$gb_DBname,$gb_DBuser,$gb_DBpass,$SESS_DBH;
- if(!$SESS_DBH=mysql_pconnect($gb_DBHOSTname,$gb_DBuser,$gb_DBpass)){
- echo "
- MySql Error:".mysql_error()."
- ";
- die();
- }
- if(!mysql_select_db($gb_DBname,$SESS_DBH)){
- echo "
- MySql Error:".mysql_error()."
- ";
- die();
- }
- return true;
- }
- function sess_close(){
- return true;
- }
- function sess_read($key){
- global $SESS_DBH,$SESS_LIFE;
- $qry="select value from db_session where sesskey = '$key' and expiry > ".time();
- $qid=mysql_query($qry,$SESS_DBH);
- if(list($value)=mysql_fetch_row($qid)){
- return $value;
- }
- return false;
- }
- function sess_write($key,$val){
- global $SESS_DBH,$SESS_LIFE;
- $expiry=time()+$SESS_LIFE;
- $value=$val;
- $qry="insert into db_session values('$key',$expiry,'$value')";
- $qid=mysql_query($qry,$SESS_DBH);
- if(!$qid){
- $qry="update db_session set expiry=$expiry, value='$value' where sesskey='$key' and expiry >".time();
- $qid=mysql_query($qry,$SESS_DBH);
- }
- return $qid;
- }
- function sess_destroy($key){
- global $SESS_DBH;
- $qry="delete from db_session where sesskey = '$key'";
- $qid=mysql_query($qry,$SESS_DBH);
- return $qid;
- }
- function sess_gc($maxlifetime){
- global $SESS_DBH;
- $qry="delete from db_session where expiry < ".time();
- $qid=mysql_query($qry,$SESS_DBH);
- return mysql_affected_rows($SESS_DBH);
- }
- session_module_name();
- session_set_save_handler("sess_open","sess_close","sess_read","sess_write","sess_destroy","sess_gc");
- ?>
複製代碼4.建立測試檔案。在使用之前必須引用剛剛建立的session_mysql.php檔案。檔案:session_test.php
- include ("session_mysql.php");
- session_start();
- $_SESSION['abc']= "A: I will be back!";
- $_SESSION['meto']= "B: Me too ";
- $_SESSION['name']= "louis ";
- echo "click me";
- ?>
複製代碼檔案:get_session_test.php
- include ("session_mysql.php");
- session_start();
- echo $_SESSION['abc'];
- echo "
";
- echo $_SESSION['meto'];
- echo "
";
- echo $_SESSION['name'];
- $_SESSION['wq']="12e";
- echo "
click again";
- ?>
複製代碼檔案:get_session_test2.php
- include ("session_mysql.php");
- session_start();
- echo $_SESSION['abc'];
- echo "
";
- echo $_SESSION['meto'];
- echo "
";
- echo $_SESSION['name'];
- echo "
";
- echo $_SESSION['wq'];
- //session_destroy();//用來銷毀所有session的函數。
- ?>
複製代碼 |