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的工具类:
<!--?php //error_reporting(0); class session { var $lifeTime; var $dbHandle; function open($savePath, $sessName) { $this--->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
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章
<🎜>:种植花园 - 完整的突变指南
3 周前ByDDD
<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前By尊渡假赌尊渡假赌尊渡假赌
如何修复KB5055612无法在Windows 10中安装?
3 周前ByDDD
北端:融合系统,解释
3 周前By尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

记事本++7.3.1
好用且免费的代码编辑器

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。