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+MYSQL 出现乱码的解决方法
Aug 08 PHP
php中日期加减法运算实现代码
Dec 08 PHP
php求两个目录的相对路径示例(php获取相对路径)
Mar 27 PHP
浅析PHP文件下载原理
Dec 25 PHP
PHP获取文件夹大小函数用法实例
Jul 01 PHP
php检测文本的编码
Jul 26 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
Aug 31 PHP
PHP MPDF中文乱码的解决方式
Dec 08 PHP
CakePHP框架Session设置方法分析
Feb 23 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
Apr 06 PHP
PHP 技巧 * SVG 保存为图片(分享图生成)
Apr 02 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
smtp邮件发送一例
2006/10/09 PHP
php检测useragent版本示例
2014/03/24 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
php筛选不存在的图片资源
2015/04/28 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
laravel批量生成假数据的方法
2019/10/09 PHP
thinkPHP事务操作简单案例分析
2019/10/17 PHP
Extjs Ext.MessageBox.confirm 确认对话框详解
2010/04/02 Javascript
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
JS查找数组中重复元素的方法详解
2017/06/14 Javascript
详解vue服务端渲染(SSR)初探
2017/06/19 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
python中的对象拷贝示例 python引用传递
2014/01/23 Python
深入解析Python中的WSGI接口
2015/05/11 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
Python 寻找局部最高点的实现
2019/12/05 Python
详解Python在使用JSON时需要注意的编码问题
2019/12/06 Python
Django+python服务器部署与环境部署教程详解
2020/03/30 Python
Agoda台湾官网:国内外订房2折起
2018/03/20 全球购物
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
日语系毕业生推荐信
2013/11/11 职场文书
优秀班干部事迹材料
2014/01/26 职场文书
现场活动策划方案
2014/08/22 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
2015年秋季运动会广播稿
2015/08/19 职场文书