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));
以上就是本文的全部内容,希望对大家的学习有所帮助。