PHP封装的数据库保存session功能类


Posted in PHP onJuly 11, 2016

本文实例讲述了PHP封装的数据库保存session功能类。分享给大家供大家参考,具体如下:

PHP用数据库保存session类:

<?php
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 相关文章推荐
相对路径转化成绝对路径
Apr 10 PHP
php 来访国内外IP判断代码并实现页面跳转
Dec 18 PHP
PHP对MongoDB[NoSQL]数据库的操作
Mar 01 PHP
使用openssl实现rsa非对称加密算法示例
Jan 24 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
Jul 08 PHP
thinkphp缓存技术详解
Dec 09 PHP
linux下实现定时执行php脚本
Feb 13 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
Feb 16 PHP
在Linux系统下一键重新安装WordPress的脚本示例
Jun 30 PHP
Yii 2.0中场景的使用教程
Jun 02 PHP
PHP htmlspecialchars_decode()函数用法讲解
Mar 01 PHP
Laravel统计一段时间间隔的数据方法
Oct 09 PHP
php中array_column函数简单实现方法
Jul 11 #PHP
PHP针对字符串开头和结尾的判断方法
Jul 11 #PHP
php进行ip地址掩码运算处理的方法
Jul 11 #PHP
php解析xml 的四种简单方法(附实例)
Jul 11 #PHP
php进程间通讯实例分析
Jul 11 #PHP
Adnroid 微信内置浏览器清除缓存
Jul 11 #PHP
php通过两层过滤获取留言内容的方法
Jul 11 #PHP
You might like
php中Smarty模板初体验
2011/08/08 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
php生成二维码不保存服务器还有下载功能的实现代码
2018/08/09 PHP
PHP字符串与数组处理函数用法小结
2020/01/07 PHP
JQuery 风格的HTML文本转义
2009/07/01 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
Function.prototype.call.apply结合用法分析示例
2013/07/03 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
2015/03/13 Javascript
jQuery实现淡入淡出的模态框
2017/02/09 Javascript
es7学习教程之Decorators(修饰器)详解
2017/07/21 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
python两种遍历字典(dict)的方法比较
2014/05/29 Python
python一键升级所有pip package的方法
2017/01/16 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
python3解析库pyquery的深入讲解
2018/06/26 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
WxPython建立批量录入框窗口
2019/02/27 Python
python实现微信防撤回神器
2019/04/29 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
2020/02/07 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
临床医学系毕业生推荐信
2013/11/09 职场文书
优秀干部获奖感言
2014/01/31 职场文书
董事长助理工作职责
2014/06/08 职场文书
计算机毕业生求职信
2014/06/10 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书
python对文档中元素删除,替换操作
2022/04/02 Python