PHP 自定义session储存 数据库 方式类 高洛峰 细说PHP
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,自定义session储存 数据库 方式类在php.ini配置文件中更改设置 (Registered_save_handlers 有三种方式 files user memcache)session.sa
千家信息网最后更新 2026年11月03日PHP 自定义session储存 数据库 方式类 高洛峰 细说PHP
自定义session储存 数据库 方式类
在php.ini配置文件中更改设置 (Registered_save_handlers 有三种方式 files user memcache)
session.save_handler = user 表示用户自定义session类
'; return true; } //关闭 public static function close(){ echo 'close
'; return true; } //读取 echo public static function read($sid){ echo 'read
'; $query = "select * from session where sid = ?"; $stmt = self::$pdo->prepare($query); $stmt->execute(array($sid)); $result = $stmt->fetch(PDO::FETCH_ASSOC); //还没有会话信息,返回空字符串 if(!$result){ return ' '; } //如果超出时间,销毁session if($result['utime']+self::$maxlifetime < self::$ctime){ self::destroy($sid); return ' '; } //如果用户换了IP或换了浏览器 if($result['uip']!=self::$uip || $result['uagent'] != self::$uagent){ self::destroy($sid); return ' '; } return $result['sdata']; } //写入 $_SESSION['username']='yang' public static function write($sid,$data){ echo 'write
'; $query = "select * from session where sid =? "; $stmt = self::$pdo->prepare($query); $stmt->execute(array($sid)); $result = $stmt->fetch(PDO::FETCH_ASSOC); //若有数据,则更新 if($result){ //如果数据和原来的不一样 或者 当前时间大于文件修改时间加30秒的时候 才更新 if($result['sdata']!=$data || $result['utime']+30< self::$ctime){// +加号优先级高于 <小于号 $query = "update session set sdata = ?, utime = ? where sid =? "; $stmt = self::$pdo->prepare($query); $stmt->execute(array($data,self::$ctime,$sid)); } }else{//插入数据 if(!empty($data)){ $query = "insert into session(sid,sdata,utime,uip,uagent) values(?,?,?,?,?)"; $stmt = self::$pdo->prepare($query); $stmt -> execute(array($sid,$data,self::$ctime,self::$uip,self::$uagent)); } } } //销毁 session_destroy public static function destroy($sid){ echo 'destroy
'; $query = "delete from session where sid = ?"; $stmt = self::$pdo->prepare($query); return $stmt -> execute(array($sid)); } //回收垃圾 public static function gc($maxlifetime){ echo 'gc
'; $query = "delete from session where utime < ?"; $stmt = self::$pdo->prepare($query); return $stmt -> execute(array(self::$ctime-self::$maxlifetime)); } } DBSession::start($pdo);创建session表
create table session( sid char(32) not null default ' ', utime int not null default 0, sdata text, uip char(15) not null default ' ', uagent varchar(200) not null default ' ', index session_sid(sid) );
数据
时间
方式
用户
浏览器
浏览
数据库
文件
正在
更新
不同
合法
最大
优先级
信息
函数
加号
变量
垃圾
对象
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
云南咖啡
互联网科技海报
上海卓越科技互联网
科技互联网公司装修
科技信息互联网
北京互联网科技
平安科技 互联网
互联网科技公司官网
互联网科技革命
互联网科技网站
互联网高科技企业
科技大学互联网专业好不好
成都互联网科技公司工作好不好
搜狐科技互联网
哈尔滨屹滨互联网科技有限公司
佛山市翊博互联网络科技有限公司
互联网科技大赛获奖感言
北京军民互联网科技公司
绵阳真晨互联网科技有限公司
互联网对科技影响
天津市摩尔互联网科技
中关村互联网科技集团
喔噻互联网科技
互联网科技作文
卓越科技互联网 招聘
江苏南京365互联网科技
互联网时代科技改变生活
互联网金融科技名词解释
华中科技大学互联网的牛人
科技互联网公司两年变化