php session 写入数据库


Posted in PHP onFebruary 13, 2016

本文实例介绍了php session 写入数据库的方法,分享给大家供大家参考,具体内容如下

<?php
 
#
#  codeMaker Alpha 0.1.1 ( haowei.me )
#  This framework comply with the GPL license agreement
#
 
class session_handler {
   
  protected $maxlifetime = null;
  protected $dbHandle = null;
  public $config = null;
   
  public static function init($args) {
    return new self($args);
  }
   
  public function __construct($args) {
     
    $this->config = $args;
    $this->maxlifetime = get_cfg_var("session.gc_maxlifetime");
    session_set_save_handler(
    array($this, "open"),
    array($this, "close"),
    array($this, "read"),
    array($this, "write"),
    array($this, "destroy"),
    array($this, "gc"));
     
  }
   
  public function open() {
    $this->link = mysqli_connect(
    $this->config['host'], 
    $this->config['user'], 
    $this->config['password'], 
    $this->config['database']);
    mysqli_set_charset($this->link, "utf8");
    $sql = 'CREATE TABLE IF NOT EXISTS `%s` (
    `session_id` varchar(255) NOT NULL,
    `session_data` text,
    `session_expires` char(10) NOT NULL,
    PRIMARY KEY (`session_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;';
    $sql = sprintf($sql, $this->config['table']);
    mysqli_query($this->link, $sql);
    return true;
  }
   
  public function close() {
    return true;
  }
   
   
  public function read($session_id) {
    if(empty($session_id)) return null;
     
    $sql = 'SELECT `session_data` AS `data` FROM `%s` WHERE `session_id` = "%s" AND `session_expires` > "%u"';
    $sql = sprintf($sql, 
    mysqli_real_escape_string($this->link, $this->config['table']), 
    mysqli_real_escape_string($this->link, $session_id),
    time());
     
    $result = mysqli_query($this->link, $sql);
    $row = mysqli_fetch_assoc($result);
    return $row['data'];
     
  }
   
  public function write($session_id, $session_data) {
    if(empty($session_id)) return null;
     
    $newExpires = time() + $this->maxlifetime;
    $sql = 'REPLACE INTO `%s` SET `session_id` = "%s", `session_data` = "%s", `session_expires` = "%u"';
    $sql = sprintf($sql, 
    mysqli_real_escape_string($this->link, $this->config['table']), 
    mysqli_real_escape_string($this->link, $session_id),
    mysqli_real_escape_string($this->link, $session_data),
    $newExpires);
     
    $result = mysqli_query($this->link, $sql);
    return mysqli_affected_rows($this->link);
     
  }
   
  public function destroy($session_id) {
    $sql = 'DELETE FROM `%s` WHERE `session_id` = "%s"';
    $sql = sprintf($sql, 
    mysqli_real_escape_string($this->link, $this->config['table']), 
    mysqli_real_escape_string($this->link, $session_id));
 
    $result = mysqli_query($this->link, $sql);
    return mysqli_affected_rows($this->link);
  }
   
  public function gc() {
    $sql = 'DELETE FROM `%s` WHERE `session_expires` < "%u"';
    $sql = sprintf($sql, 
    mysqli_real_escape_string($this->link, $this->config['table']), 
    time());
     
    $result = mysqli_query($this->link, $sql);
    return mysqli_affected_rows($this->link);
  }
   
}
 
class session {
 
  public static $collection = null;
   
  public static function open($clean = false, $token = false) {
    if($clean) ob_end_clean();
    if($token) session_id($token);
    session_start();
    self::$collection = $_SESSION;
  }
   
  public static function id() {
    $num_args = func_num_args();
    if($num_args) {
      $args = func_get_arg(0);
      return session_id($args);
    }else{
      return session_id();
    }
  }
   
  public static function get($name) {
    return isset($_SESSION[$name]) ? $_SESSION[$name] : null;
  }
   
  public static function set($name, $value) {
    $_SESSION[$name] = $value;
    return true;
  }
   
  public static function delete($name) {
    if(!isset($_SESSION[$name])) return null;
    unset($_SESSION[$name]);
    return true;
  }
   
  public static function destroy() {
    session_destroy();
  }
   
}
 
 
 
$config = array(
"host"=> "127.0.0.1",
"user"=> "root",
"password"=> "123456",
"database"=> "test",
"charset"=> "utf8",
"table"=> "user_session");
 
session_handler::init($config);
session::open();
session::set("profile", array("id"=> 1, "user"=> "haowei", "vip-level"=> 6));

以上就是本文的全部内容,希望对大家的学习有所帮助。

PHP 相关文章推荐
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
Nov 07 PHP
PHP的error_reporting错误级别变量对照表
Jul 08 PHP
php中fgetcsv()函数用法实例
Nov 28 PHP
php获取数组元素中头一个数组元素值的实现方法
Dec 20 PHP
Yii中CGridView禁止列排序的设置方法
Jul 12 PHP
php使用curl详细解析及问题汇总
Aug 11 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
Nov 30 PHP
thinkPHP交易详情查询功能详解
Dec 02 PHP
PHP后端银联支付及退款实例代码
Jun 23 PHP
PHP命名空间与自动加载类详解
Sep 04 PHP
PHP中使用mpdf 导出PDF文件的实现方法
Oct 22 PHP
thinkphp5实现微信扫码支付
Dec 23 PHP
php等比例缩放图片及剪切图片代码分享
Feb 13 #PHP
PHP信号量基本用法实例详解
Feb 12 #PHP
PHP消息队列用法实例分析
Feb 12 #PHP
PHP共享内存用法实例分析
Feb 12 #PHP
PHP连接MSSQL方法汇总
Feb 05 #PHP
Symfony2开发之控制器用法实例分析
Feb 05 #PHP
Symfony2实现在doctrine中内置数据的方法
Feb 05 #PHP
You might like
PHP程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
PHP正则表达式入门教程(推荐)
2016/05/18 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
javascript 定义新对象方法
2010/02/20 Javascript
浅谈javascript的数据类型检测
2010/07/10 Javascript
JS常用表单验证方法总结
2014/05/22 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
2015/03/03 Javascript
javascript手风琴下拉菜单实现代码
2015/11/12 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
jQuery中的each()详细介绍(推荐)
2016/05/25 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
Vue实现日历小插件
2019/06/26 Javascript
vue实现简易计算器功能
2021/01/20 Vue.js
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
Python模块学习 filecmp 文件比较
2012/08/27 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
pandas 按照特定顺序输出的实现代码
2018/07/10 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
快速解决vue.js 模板和jinja 模板冲突的问题
2019/07/26 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
介绍一下Java中标识符的命名规则
2014/02/03 面试题
生产主管岗位职责
2013/11/10 职场文书
太太口服液广告词
2014/03/20 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python