程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> session入庫

session入庫

編輯:DB2教程

session入庫


session_set_save_handler(callback open,callback close,callback read,call write,callback destroy,callback gc)

 

各個參數的的執行時機以及使用說明

回調函數

描述

open()

在運行session_start()時執行,該函數的聲明需要兩個參數,系統會自動的將php.ini中session.save_path選項值傳遞給第一個參數,將session名自動的傳遞到第二個參數中,返回true則繼續往下執行

close()

該函數不需要參數,在腳本執行完成或調用session_write_close(),session_destroy()時被執行,即在所有session操作完成後被執行,如果不需要處理直接返回true

read()

在運行session_start()時執行,因為在開啟會話時,會去read當前的session數據並且寫入$_SESSION變量。需要聲明一個參數,系統會自動的將SessionId傳遞給該函數,用於通過sessionId獲取對應的用戶數據,返回當前的用戶數據寫入$_SESSION數據

write()

該函數在腳本結束和對$_SESSION變量賦值時執行,需要聲明兩個參數,分別是sessionid和串行化後session信息字符串,在對$_SESSION變量賦值時,就可以通過Sessionid找到存儲位置,並且將信息寫入,存儲成功可以返回true繼續向下執行

 

destroy()

在運行session_destroy時執行,需要聲明一個參數,系統會自動將sessionId傳遞給該函數,去除對應的回話信息

gc()

垃圾回收程序啟動時執行。需要聲明一個參數,系統自動將php.ini中

session.gc_maxlifetime選項的值傳遞給該函數,用戶刪除超過這個時間的session信息,返回true可以繼續向下執行

 

Session入庫就是將session的信息保存到表中,需要設置session.save_handler = user

 

新建session表

DROP TABLE IF EXISTS `session`;

CREATE TABLE `session` (

`sid` char(32) NOT NULL,

`update_time` int(11) default NULL,

`data` text,

PRIMARY KEY (`sid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

需要存儲 sessionid ,更新時間,格式化數據

 

然後寫功能性代碼:

$link=mysql_connect("127.0.0.1","root","root");

mysql_select_db("session");

mysql_query("set names utf8");



function open($save_path,$session_name){

return true;

}



function close(){

return true;

}



function read($sid){



/*通過sid先從數據庫中查找當前用戶的信息*/

$sql="select * from session where sid='$sid'";

//echo $sql;

$re=mysql_query($sql);

/*如果沒有結果返回空字符串給$_SESSION變量*/

if(!$result=mysql_fetch_array($re)){

return "";

}

/*如果有數據返回結果*/



return $result["data"];

}



function write($sid,$data){



/*每次寫之前先從數據庫中獲取一下是否已經存在該用戶的session信息*/

$sql="select * from session where sid='$sid'";

$re=mysql_query($sql);

$time=time();

/*如果存在該用戶的信息則去修改,如果不存在要重新添加一行數據*/

if($result=mysql_fetch_array($re)){

//存在的情況

$sql1="update session set update_time='$time',data='$data' where sid='$sid'";

mysql_query($sql1);

}else{

//不存在的情況

if(!empty($data)){

$sql1="insert into session(sid,update_time,data) values('$sid','$time','$data')";

$sth1=mysql_query($sql1);



}

}

return true;



}



function destroy($sid){

//通過sessionid來刪除當前用戶的記錄

$sql="delete from session where sid='$sid'";

mysql_query($sql);

return true;

}



function gc($maxfiletime){

//通過sessionid來刪除當前用戶的記錄

$sql="delete * from session where update_time<$maxfiletime";

mysql_query($sql);

return true;



}

session_set_save_handler("open","close","read","write","destroy","gc");

session_start();

?>

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved