php session 写入数据库
本文实例介绍了phpsession写入数据库的方法,分享给大家供大家参考,具体内容如下
<?php
#
#codeMakerAlpha0.1.1(haowei.me)
#ThisframeworkcomplywiththeGPLlicenseagreement
#
classsession_handler{
protected$maxlifetime=null;
protected$dbHandle=null;
public$config=null;
publicstaticfunctioninit($args){
returnnewself($args);
}
publicfunction__construct($args){
$this->config=$args;
$this->maxlifetime=get_cfg_var("session.gc_maxlifetime");
session_set_save_handler(
array($this,"open"),
array($this,"close"),
array($this,"read"),
array($this,"write"),
array($this,"destroy"),
array($this,"gc"));
}
publicfunctionopen(){
$this->link=mysqli_connect(
$this->config['host'],
$this->config['user'],
$this->config['password'],
$this->config['database']);
mysqli_set_charset($this->link,"utf8");
$sql='CREATETABLEIFNOTEXISTS`%s`(
`session_id`varchar(255)NOTNULL,
`session_data`text,
`session_expires`char(10)NOTNULL,
PRIMARYKEY(`session_id`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8COLLATE=utf8_unicode_ci;';
$sql=sprintf($sql,$this->config['table']);
mysqli_query($this->link,$sql);
returntrue;
}
publicfunctionclose(){
returntrue;
}
publicfunctionread($session_id){
if(empty($session_id))returnnull;
$sql='SELECT`session_data`AS`data`FROM`%s`WHERE`session_id`="%s"AND`session_expires`>"%u"';
$sql=sprintf($sql,
mysqli_real_escape_string($this->link,$this->config['table']),
mysqli_real_escape_string($this->link,$session_id),
time());
$result=mysqli_query($this->link,$sql);
$row=mysqli_fetch_assoc($result);
return$row['data'];
}
publicfunctionwrite($session_id,$session_data){
if(empty($session_id))returnnull;
$newExpires=time()+$this->maxlifetime;
$sql='REPLACEINTO`%s`SET`session_id`="%s",`session_data`="%s",`session_expires`="%u"';
$sql=sprintf($sql,
mysqli_real_escape_string($this->link,$this->config['table']),
mysqli_real_escape_string($this->link,$session_id),
mysqli_real_escape_string($this->link,$session_data),
$newExpires);
$result=mysqli_query($this->link,$sql);
returnmysqli_affected_rows($this->link);
}
publicfunctiondestroy($session_id){
$sql='DELETEFROM`%s`WHERE`session_id`="%s"';
$sql=sprintf($sql,
mysqli_real_escape_string($this->link,$this->config['table']),
mysqli_real_escape_string($this->link,$session_id));
$result=mysqli_query($this->link,$sql);
returnmysqli_affected_rows($this->link);
}
publicfunctiongc(){
$sql='DELETEFROM`%s`WHERE`session_expires`<"%u"';
$sql=sprintf($sql,
mysqli_real_escape_string($this->link,$this->config['table']),
time());
$result=mysqli_query($this->link,$sql);
returnmysqli_affected_rows($this->link);
}
}
classsession{
publicstatic$collection=null;
publicstaticfunctionopen($clean=false,$token=false){
if($clean)ob_end_clean();
if($token)session_id($token);
session_start();
self::$collection=$_SESSION;
}
publicstaticfunctionid(){
$num_args=func_num_args();
if($num_args){
$args=func_get_arg(0);
returnsession_id($args);
}else{
returnsession_id();
}
}
publicstaticfunctionget($name){
returnisset($_SESSION[$name])?$_SESSION[$name]:null;
}
publicstaticfunctionset($name,$value){
$_SESSION[$name]=$value;
returntrue;
}
publicstaticfunctiondelete($name){
if(!isset($_SESSION[$name]))returnnull;
unset($_SESSION[$name]);
returntrue;
}
publicstaticfunctiondestroy(){
session_destroy();
}
}
$config=array(
"host"=>"127.0.0.1",
"user"=>"root",
"password"=>"123456",
"database"=>"test",
"charset"=>"utf8",
"table"=>"user_session");
session_handler::init($config);
session::open();
session::set("profile",array("id"=>1,"user"=>"haowei","vip-level"=>6));
以上就是本文的全部内容,希望对大家的学习有所帮助。