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();