PHP封装的数据库保存session功能类
本文实例讲述了PHP封装的数据库保存session功能类。分享给大家供大家参考,具体如下:
PHP用数据库保存session类:
<?php
classSafeSessionHandlerimplementsSessionHandlerInterface{
public$save_path;
public$session_name;
public$table;
publicfunction__construct(){
$this->table=newTable("safe_session");
}
privatefunctionsession_id_parse($session_id){
$time=hexdec(substr($session_id,0,8));
$skey=substr($session_id,8);
returnarray($time,$skey);
}
publicfunctionclose(){
loginfo("close:");
returntrue;
}
publicfunctioncreate_sid(){
loginfo("create_sid:");
$time=time();
$skey="";
$char="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for($i=0;$i<52;$i++){
$skey.=$char{mt_rand(0,61)};
}
$session=array(
"time"=>$time,
"skey"=>$skey,
"sval"=>"",
);
$this->table->insert($session);
returndechex($time).$skey;
}
publicfunctiondestroy($session_id){
loginfo("destroy:%s",$session_id);
list($time,$skey)=$this->session_id_parse($session_id);
$this->table->where("time=?",$time)->where("skey=?",$skey)->delete();
returntrue;
}
publicfunctiongc($maxlifetime){
loginfo("gc:%s",$maxlifetime);
$this->table->where("time<?",time()-86400*30)->delete();
returntrue;
}
publicfunctionopen($save_path,$session_name){
loginfo("open:%s,%s",$save_path,$session_name);
$this->save_path=$save_path;
$this->session_name=$session_name;
returntrue;
}
publicfunctionread($session_id){
loginfo("read:%s",$session_id);
list($time,$skey)=$this->session_id_parse($session_id);
$row=$this->table->where("time=?",$time)->where("skey=?",$skey)->select()->fetch();
if(empty($row)){
return"";
}
return$row["sval"];
}
publicfunctionwrite($session_id,$session_data){
loginfo("write:%s,%s",$session_id,$session_data);
$session=array("sval"=>$session_data,);
list($time,$skey)=$this->session_id_parse($session_id);
$this->table->where("time=?",$time)->where("skey=?",$skey)->update($session);
returntrue;
}
}
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。