现在的位置: 主页 > 主打产品 > 文章列表

php session存数据库

作者:北京夜明珠节能科技有限公司 来源:www.ymzjn.com 发布时间:2017-09-08 19:40:42
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 < ".time(),$this->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查询数据:
JSON
  • name"gxx"
  • pass"123"不要被事物蒙蔽了眼睛。。。。

  • 企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:神农架SEO http://shennongjia.4567w.com

    上一篇:js之substr和substring的区别 下一篇:最后一页

    本周热门文章