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新手上路(十二)
Oct 09 PHP
PHP XML数据解析代码
May 26 PHP
作为PHP程序员应该了解MongoDB的五件事
Jun 03 PHP
Symfony页面的基本创建实例详解
Jan 26 PHP
php动态添加url查询参数的方法
Apr 14 PHP
简单解决新浪SAE无法上传文件的问题
May 13 PHP
Yii rules常用规则示例
Mar 15 PHP
利用php输出不同的心形图案
Apr 22 PHP
Yii2简单实现给表单添加验证码的方法
Jul 18 PHP
PHP单态模式简单用法示例
Nov 16 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
Feb 17 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
Sep 03 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桌面中心(四) 数据显示
2007/03/11 PHP
我的php学习笔记(毕业设计)
2012/02/21 PHP
Javascript常用运算符(Operators)-javascript基础教程
2007/12/14 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
TypeScript入门-接口
2017/03/30 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
vue中的数据绑定原理的实现
2018/07/02 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
使用Vue生成动态表单
2019/11/26 Javascript
vuex实现购物车功能
2020/06/28 Javascript
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
python禁用键鼠与提权代码实例
2019/08/16 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
100%有机精油,美容油:House of Pure Essence
2018/10/30 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
酒店保安领班职务说明书
2014/03/04 职场文书
乡镇网格化管理实施方案
2014/03/23 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
普通话演讲稿
2014/09/03 职场文书
欢迎词范文
2015/01/27 职场文书
让生命充满爱观后感
2015/06/08 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
浅谈MySQL函数
2021/10/05 MySQL