本文实例讲述了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功能类相关推荐

  1. [转]PHP用mysql数据库存储session

    From : http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2010/0226/4002.html 大部分使用php的人一旦应用到sessio ...

  2. 对 PHP SESSION 的深刻认识(三)---- 数据库存储session

    前言: 本篇博客是继承自我的前面的两篇博客 <对 PHP SESSION 的深刻认识(一)>.<对 PHP SESSION 的深刻认识(二)> 而来的,主要是解决前面的问题. ...

  3. 为什么要用Hibernate框架? 把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了?...

    既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?把SessionFactory,Session,Transcational封装成包含crud的 ...

  4. 使用MySql保存session

    2019独角兽企业重金招聘Python工程师标准>>> 本文来源于:http://www.lai18.com/content/433951.html 本文实例讲述了php使用MySQ ...

  5. laravel用redis保存session遇到的坑,没报错,但redis-cli就是查不到

    laravel用redis保存session遇到的坑, 配置redis存储session流程是这样的 在.evn文件中把session驱动和连接改为了redis的 如下: SESSION_DRIVER ...

  6. redis/分布式文件存储系统/数据库 存储session,解决负载均衡集群中session不一致问题...

    先来说下session和cookie的异同 session和cookie不仅仅是一个存放在服务器端,一个存放在客户端那么笼统 session虽然存放在服务器端,但是也需要和客户端相互匹配,试想一个浏览 ...

  7. php session写入数据库_php session 写入数据库,phpsession

    php session 写入数据库,phpsession 本文实例介绍了php session 写入数据库的方法,分享给大家供大家参考,具体内容如下 config = $args; $this-> ...

  8. go mgo包 简单封装 mongodb 数据库驱动

    mgo是go编写的mongodb的数据库驱动,集成到项目中进行mongodb的操作很流畅,以下是对其的一些简单封装,具体使用可随意改动封装. 安装 go get gopkg.in/mgo.v2 使用 ...

  9. Unity简单商城系统,用SQLite数据库保存/加载数据

    Unity简单商城系统案例 流程 最后效果展示 1. 创建项目并导入SQLite需要的dll文件 2. 创建数据库表(玩家表和商店表) 3. Singleton 单例脚本 4. 封装SQLite数据库 ...

最新文章

  1. 6月.CN域名注册量突破1200万个 增速环比加快
  2. 【计算理论】Pumping 引理 ( 四个等价概念 | 自动机界限 | Pumping 引理简介 | Pumping 引理证明正则表达式 | Pumping 引理示例分析 )
  3. Thrift之Protocol源码分析
  4. Lua 脚本获取 EVAL EVALSHA 命令的参数
  5. matlab 最小二乘法拟合_计量与论文串讲:最小二乘法
  6. Linux中的15个‘echo’ 命令实例
  7. MSP430G2553 移植 Contiki RTOS 实时操作系统
  8. 关于键盘事件中keyCode、which和charCode 的兼容性测试
  9. 机械+固态双硬盘时机械硬盘卡顿问题解决
  10. flutter 防止键盘弹出 导致超出屏幕
  11. bootstrap中关于兼容ie8 和 rem的问题总结
  12. ntsd.exe 附使用教程
  13. Http分段下载实现
  14. 澳门上葡京综合度假村冬季献礼迎佳节
  15. java集合之HashMap相关原理 方法
  16. SnnGrow快讯:Apple Books上线AI读书功能、有声书市场将迎来颠覆时刻、刚过7岁生日的OpenAI估值达到290亿美元、跻身全球独角兽排行榜前20、中国航天2023全年发射将再破60次
  17. Java内存模型(JMM)
  18. 第十一次 作业 视图的应用
  19. 家电三巨头的集体突围
  20. Excel表格中设置数据的有效性

热门文章

  1. 最优化学习笔记(五)牛顿法及拟牛顿法
  2. 协议簇:IPv4 解析
  3. 利用.dSYM和.app文件准确定位Crash位置
  4. 中大型计算机代表型号,目前个人计算机主要机型.doc
  5. hfss螺旋平面_利用HFSS设计平面等角螺旋天线
  6. JAVAWEB入门之Requset原理
  7. java 虚拟机 字节码,JAVA虚拟机:虚拟机字节码执行引擎
  8. 中科院计算机学院王宏,王宏-中国科学院大学-UCAS
  9. 当前操作系统缺少黑体等字体_从零开始开发一个操作系统
  10. 差异基因 p log2foldchange_拟南芥的基因ID批量转换?差异基因,GO/KEGG数据库注释(转录组直接送你全套流程)...