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 相关文章推荐
php空间不支持socket但支持curl时recaptcha的用法
Nov 07 PHP
探讨PHP中OO之静态关键字以及类常量的详解
Jun 07 PHP
CI框架开发新浪微博登录接口源码完整版
May 28 PHP
php几个预定义变量$_SERVER用法小结
Nov 07 PHP
ThinkPHP模板输出display用法分析
Nov 26 PHP
php源码分析之DZX1.5随机数函数random用法
Jun 17 PHP
php目录拷贝实现方法
Jul 10 PHP
php微信高级接口群发 多客服
Jun 23 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
thinkPHP通用控制器实现方法示例
Nov 23 PHP
PHP实现SMTP邮件的发送实例
Sep 27 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
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
php生成zip文件类实例
2015/04/07 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
php精度计算的问题解析
2019/06/21 PHP
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
jQuery制作简洁的图片轮播效果
2015/04/03 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
three.js中文文档学习之通过模块导入
2017/11/20 Javascript
JavaScript面试出现频繁的一些易错点整理
2018/03/29 Javascript
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
Layui 动态禁止select下拉的例子
2019/09/03 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
Python中字典映射类型的学习教程
2015/08/20 Python
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
python 截取 取出一部分的字符串方法
2017/03/01 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
印度尼西亚电子产品购物网站:Kliknklik
2018/06/05 全球购物
英国标准协会商店:BSI Shop
2019/02/25 全球购物
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
总经理职责范文
2013/11/08 职场文书
草船借箭教学反思
2014/02/03 职场文书
留学顾问岗位职责
2014/04/14 职场文书
教师考核评语
2014/04/28 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
客服专员岗位职责
2015/02/10 职场文书
干部考核工作总结
2015/08/12 职场文书