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计划任务之关闭浏览器后仍然继续执行的函数
Jul 22 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
May 23 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
Jul 01 PHP
PHP的preg_match匹配字符串长度问题解决方法
May 03 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
Nov 22 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
Jan 04 PHP
示例详解Laravel的注册重构
Aug 14 PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 PHP
PHP生成随机字符串实例代码(字母+数字)
Sep 11 PHP
php实现推荐功能的简单实例
Sep 29 PHP
php报错502badgateway解决方法
Oct 11 PHP
PHP7原生MySQL数据库操作实现代码
Jul 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后退一页表单内容保存实现方法
2012/06/17 PHP
关于PHP结束标签的使用细节探讨及联想
2013/03/04 PHP
解析PHP可变函数的经典用法
2013/06/20 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
php中apc缓存使用示例
2013/12/25 PHP
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
JavaScript中使用concat()方法拼接字符串的教程
2015/06/06 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
简单谈谈JS中的正则表达式
2017/09/11 Javascript
angularjs实现简单的购物车功能
2017/09/21 Javascript
如何实现一个简易版的vuex持久化工具
2019/09/11 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
Django中使用locals()函数的技巧
2015/07/16 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
骆驼官方商城:CAMEL
2016/11/22 全球购物
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
如何处理简单的PHP错误
2015/10/14 面试题
如何开发安全的AJAX应用
2014/03/26 面试题
计算机工程学院个人求职信
2013/10/05 职场文书
大学生职业生涯规划书模版
2013/12/30 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
公司委托书范本
2014/04/04 职场文书
重大事项社会稳定风险评估方案
2014/06/15 职场文书
合伙开公司协议书范本
2014/10/28 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
详解JAVA中的OPTIONAL
2021/06/14 Java/Android