php session 封装类,PHP封装的数据库保存session功能类
本文实例讲述了PHP封装的数据库保存session功能类。分享给大家供大家参考,具体如下:
PHP用数据库保存session类:
class SafeSessionHandler implements SessionHandlerInterface {
public $save_path;
public $session_name;
public $table;
public function __construct() {
$this->table = new Table("safe_session");
}
private function session_id_parse($session_id) {
$time = hexdec(substr($session_id, 0, 8));
$skey = substr($session_id, 8);
return array($time, $skey);
}
public function close() {
loginfo("close: ");
return true;
}
public function create_sid() {
loginfo("create_sid: ");
$time = time();
$skey = "";
$char = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for ($i=0; $i<52; $i++) {
$skey .= $char{mt_rand(0, 61)};
}
$session = array(
"time" => $time,
"skey" => $skey,
"sval" => "",
);
$this->table->insert($session);
return dechex($time) . $skey;
}
public function destroy($session_id) {
loginfo("destroy: %s", $session_id);
list($time, $skey) = $this->session_id_parse($session_id);
$this->table->where("time = ?", $time)->where("skey = ?", $skey)->delete();
return true;
}
public function gc($maxlifetime) {
loginfo("gc: %s", $maxlifetime);
$this->table->where("time < ?", time() - 86400 * 30)->delete();
return true;
}
public function open($save_path, $session_name) {
loginfo("open: %s, %s", $save_path, $session_name);
$this->save_path = $save_path;
$this->session_name = $session_name;
return true;
}
public function read($session_id) {
loginfo("read: %s", $session_id);
list($time, $skey) = $this->session_id_parse($session_id);
$row = $this->table->where("time = ?", $time)->where("skey = ?", $skey)->select()->fetch();
if (empty($row)) {
return "";
}
return $row["sval"];
}
public function write($session_id, $session_data) {
loginfo("write: %s, %s", $session_id, $session_data);
$session = array("sval" => $session_data,);
list($time, $skey) = $this->session_id_parse($session_id);
$this->table->where("time = ?", $time)->where("skey = ?", $skey)->update($session);
return true;
}
}
希望本文所述对大家PHP程序设计有所帮助。
php session 封装类,PHP封装的数据库保存session功能类相关推荐
- [转]PHP用mysql数据库存储session
From : http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2010/0226/4002.html 大部分使用php的人一旦应用到sessio ...
- 对 PHP SESSION 的深刻认识(三)---- 数据库存储session
前言: 本篇博客是继承自我的前面的两篇博客 <对 PHP SESSION 的深刻认识(一)>.<对 PHP SESSION 的深刻认识(二)> 而来的,主要是解决前面的问题. ...
- 为什么要用Hibernate框架? 把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了?...
既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?把SessionFactory,Session,Transcational封装成包含crud的 ...
- 使用MySql保存session
2019独角兽企业重金招聘Python工程师标准>>> 本文来源于:http://www.lai18.com/content/433951.html 本文实例讲述了php使用MySQ ...
- laravel用redis保存session遇到的坑,没报错,但redis-cli就是查不到
laravel用redis保存session遇到的坑, 配置redis存储session流程是这样的 在.evn文件中把session驱动和连接改为了redis的 如下: SESSION_DRIVER ...
- redis/分布式文件存储系统/数据库 存储session,解决负载均衡集群中session不一致问题...
先来说下session和cookie的异同 session和cookie不仅仅是一个存放在服务器端,一个存放在客户端那么笼统 session虽然存放在服务器端,但是也需要和客户端相互匹配,试想一个浏览 ...
- php session写入数据库_php session 写入数据库,phpsession
php session 写入数据库,phpsession 本文实例介绍了php session 写入数据库的方法,分享给大家供大家参考,具体内容如下 config = $args; $this-> ...
- go mgo包 简单封装 mongodb 数据库驱动
mgo是go编写的mongodb的数据库驱动,集成到项目中进行mongodb的操作很流畅,以下是对其的一些简单封装,具体使用可随意改动封装. 安装 go get gopkg.in/mgo.v2 使用 ...
- Unity简单商城系统,用SQLite数据库保存/加载数据
Unity简单商城系统案例 流程 最后效果展示 1. 创建项目并导入SQLite需要的dll文件 2. 创建数据库表(玩家表和商店表) 3. Singleton 单例脚本 4. 封装SQLite数据库 ...
最新文章
- 6月.CN域名注册量突破1200万个 增速环比加快
- 【计算理论】Pumping 引理 ( 四个等价概念 | 自动机界限 | Pumping 引理简介 | Pumping 引理证明正则表达式 | Pumping 引理示例分析 )
- Thrift之Protocol源码分析
- Lua 脚本获取 EVAL EVALSHA 命令的参数
- matlab 最小二乘法拟合_计量与论文串讲:最小二乘法
- Linux中的15个‘echo’ 命令实例
- MSP430G2553 移植 Contiki RTOS 实时操作系统
- 关于键盘事件中keyCode、which和charCode 的兼容性测试
- 机械+固态双硬盘时机械硬盘卡顿问题解决
- flutter 防止键盘弹出 导致超出屏幕
- bootstrap中关于兼容ie8 和 rem的问题总结
- ntsd.exe 附使用教程
- Http分段下载实现
- 澳门上葡京综合度假村冬季献礼迎佳节
- java集合之HashMap相关原理 方法
- SnnGrow快讯:Apple Books上线AI读书功能、有声书市场将迎来颠覆时刻、刚过7岁生日的OpenAI估值达到290亿美元、跻身全球独角兽排行榜前20、中国航天2023全年发射将再破60次
- Java内存模型(JMM)
- 第十一次 作业 视图的应用
- 家电三巨头的集体突围
- Excel表格中设置数据的有效性
热门文章
- 最优化学习笔记(五)牛顿法及拟牛顿法
- 协议簇:IPv4 解析
- 利用.dSYM和.app文件准确定位Crash位置
- 中大型计算机代表型号,目前个人计算机主要机型.doc
- hfss螺旋平面_利用HFSS设计平面等角螺旋天线
- JAVAWEB入门之Requset原理
- java 虚拟机 字节码,JAVA虚拟机:虚拟机字节码执行引擎
- 中科院计算机学院王宏,王宏-中国科学院大学-UCAS
- 当前操作系统缺少黑体等字体_从零开始开发一个操作系统
- 差异基因 p log2foldchange_拟南芥的基因ID批量转换?差异基因,GO/KEGG数据库注释(转录组直接送你全套流程)...