php session存数据库 这个sesison存到数据库很简单,就是根据session_id进行对数据库的crud操作,主要是用到了,session_set_save_handler这个方法,自定义session的执行方法,
首先创建数据表
create table `sessions` ( `session_id` varchar(255) not null, `session_expires` int(11) default null, `session_data` text, primary key (`session_id`) ) engine=innodb default charset=utf8
然后封装操作session的工具类:
lifetime = get_cfg_var(session.gc_maxlifetime); $dbhandle = mysql_connect(localhost,root,root); $dbsel = mysql_select_db(mysession,$dbhandle); if(!$dbhandle || !$dbsel) return false; $this->dbhandle = $dbhandle; return true; } function close() { $this->gc(ini_get('session.gc_maxlifetime')); return @mysql_close($this->dbhandle); } function read($sessid) { $res = mysql_query(select session_data as d from sessions where session_id = '$sessid' and session_expires > .time(),$this->dbhandle); if($row = mysql_fetch_assoc($res)) return $row['d']; return ; } function write($sessid,$sessdata) { $newexp = time() + $this->lifetime; $res = mysql_query(select * from sessions where session_id = '$sessid',$this->dbhandle); if($res) { mysql_query(update sessions set session_expires = '{$newexp}',session_data = '{$sessdata}' where session_id = '{$sessid}',$this->dbhandle); if(mysql_affected_rows($this->dbhandle)) return true; } else { mysql_query(insert into sessions ( session_id, session_expires, session_data) values( '{$sessid}', '{$newexp}', '{$sessdata}'),$this->dbhandle); if(mysql_affected_rows($this->dbhandle)) return true; } return false; } function destroy($sessid) { mysql_query(delete from sessions where session_id = '$sessid',$this->dbhandle); if(mysql_affected_rows($this->dbhandle)) return true; return false; } function gc($sessmaxlifetime) { mysql_query(delete from sessions where session_expires dbhandle); return mysql_affected_rows($this->dbhandle); }}#对session进行测试,发现数据库中并没有存入数据只有session_id,和session_expires的数值,其实session_data是存在的只是我们看不到 $session = new session(); session_set_save_handler(array(&$session,open), array(&$session,close), array(&$session,read), array(&$session,write), array(&$session,destroy), array(&$session,gc)); session_start(); $session->write(session_id(),json_encode(array(name=>gxx,pass=>123))); echo $session->read(session_id());?> 这里居然不支持插图。。
数据库数据:
s430j9t480ocbovq6a7a0rlk22 1435054078
session查询数据:
jsonnamegxxpass123不要被事物蒙蔽了眼睛。。。。
http://www.bkjia.com/phpjc/1022402.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/1022402.htmltecharticlephp session存数据库 这个sesison存到数据库很简单,就是根据session_id进行对数据库的crud操作,主要是用到了,session_set_save_handler这个方法,自...