PHP 自定义session储存 数据库 方式类 高洛峰 细说PHP
发表于:2025-02-10 作者:千家信息网编辑
千家信息网最后更新 2025年02月10日,自定义session储存 数据库 方式类在php.ini配置文件中更改设置 (Registered_save_handlers 有三种方式 files user memcache)session.sa
千家信息网最后更新 2025年02月10日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安全错误
数据库的锁怎样保障安全
郑州北大学城网络技术培训班
传统网络安全失效
网络安全厂家排名名
数据库四个作用是什么
传统软件开发采用什么区别
ldap导入导出数据库
opc数据库
迷你世界官方服务器叫什么名字
防疫期间网络安全行业
r语言如何爬取数据库
济南鲲鹏系列服务器
ios软件开发面试
电气选型数据库库搭建
网站服务器 维护
三月网络安全
山东立体化软件开发发展现状
软件开发重要的环节 评价6
云服务器开放安全
江苏星火网络技术有限公司
access数据库字段大小
软件开发哪一步最关键
企业邮箱显示访问服务器网络异常
我的世界服务器出租永久
阿里kvm服务器架构
香港专线网络服务器
浙江正规软件开发服务价格优惠
艾克斯久软件开发
湖南网络安全评测公司
计算机网络技术实训题
云创网络技术服务平台