php中session入庫(mysql)機制


seesion的入庫(mysql)操作,主要是修改seesion的讀取與寫入操作

主要是通過 bool session_set_save_handler(seesion_open,seesion_close,session_read,session_write,session_destory,session_gc);

依次對應的是開啟seesion連接方式,關閉session,讀取session,寫拉seesion,銷毀session,seesion的垃圾加收機制。

基本實例項目

 

 1 <?php
 2     /*
 3     * 創建數據庫
 4     drop DATABASE if EXISTS session;
 5     create DATABASE session CHARSET utf8;
 6     use session;
 7     drop TABLE if EXISTS session;
 8     create table session (
 9     sess_id char(32) UNIQUE NOT NULL,
10     sess_info text,
11     sess_expire int not null default 0
12     )CHARSET utf8 ENGINE INNODB;
13     */
14     //session入庫
15     //1. 開啟session
16     function sess_open(){ 17 //連接mysql 18 mysql_connect('localhost','root','root'); 19 mysql_query('set names utf8'); 20 mysql_query('use session'); 21 //查看當前調用了什么方法 22 echo __FUNCTION__.'<br/>'; 23  } 24 //2. 關閉session 25 function sess_close(){ 26 //關閉mysql 27 mysql_close(); 28 echo __FUNCTION__.'<br/>'; 29  } 30 //3. 讀取session 31 function sess_read($sess_id){ 32 //從數據庫讀取 33 //echo $sess_id; //這個sess_id,是系統自動生成的 34 //在讀取數據的時候我們要過濾掉過期的數據 35 //通過當前時間與系統的session最大周期的差 36 $expire = time() - ini_get('seesion.gc_maxlifetime'); 37 $sql = "select * from session where sess_id = '{$sess_id}' and sess_expire >= '{$expire}'"; 38 $res = mysql_query($sql); 39 echo __FUNCTION__.'<br/>'; 40 //得到一個數組 41 if($sess = mysql_fetch_assoc($res)){ 42 return $sess['sess_info']; 43  } 44  } 45 // 4.寫入操作 46 function sess_write($sess_id,$sess_info){ 47 //向數據庫中寫入session 48 //echo $sess_id.$sess_info; 49 $time = time(); 50 $sql = 'replace into session values('{$sess_id}','{$sess_info}','{$time}')';//使用replace主是要因為要重復修改seesion,而sess_id又是UNIQUE 51 echo __FUNCTION__.'<br>'; 52 return mysql_query($sql); 53  } 54 //5. 銷毀 55 function sess_destroy($sess_id){ 56 //刪除數據庫中信息 57 $sql = "delete from session where sess_id = '{$sess_id}'"; 58 echo __FUNCTION__.'<br>'; 59 return mysql_query($sql); 60  } 61 //6.回收 62 function sess_gc(){ 63 //刪除過期的數據 64 $expire = time()-ini_get('session.gc_maxlifetime'); 65 $sql = "delete from session where sess_expire < '{$expire}'"; 66 echo __FUNCTION__.'<br/>';
677     return mysql_query($sql);    67 } 68 //修改session機制 69 70 session_set_save_handler($sess_open,$sess_close,$sess_read,$sess_write,$sess_destroy,$sess_gc); 71 //啟動session 72 session_start(); 73 //加入session數據 74 $_SESSION['name'] = '張三'; 75 $_SESSION['age'] = '25'; 76 //查看數據 77 //var_dump($_SESSION); 78 //刪除session 79 //session_destroy();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM