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 验证图片生成函数
May 21 PHP
PHP中的session永不过期的解决思路及实现方法分享
Apr 20 PHP
解析在PHP中使用全局变量的几种方法
Jun 24 PHP
PHP实现根据设备类型自动跳转相应页面的方法
Jul 24 PHP
php微信公众账号开发之前五个坑(一)
Sep 18 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
Nov 08 PHP
利用switch语句进行多选一判断的实例代码
Nov 14 PHP
PHP实现随机生成水印图片功能
Mar 22 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
Jul 03 PHP
Laravel 5.5 实现禁用用户注册示例
Oct 24 PHP
Laravel 验证码认证学习记录小结
Dec 20 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
May 14 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
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
Smarty Foreach 使用说明
2010/03/23 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
jQuery 注意事项 与原因分析
2009/04/24 Javascript
为指定元素增加样式的js代码
2009/12/09 Javascript
jQuery 动画弹出窗体支持多种展现方式
2010/04/29 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
第九章之路径分页标签与徽章组件
2016/04/25 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
2016/11/29 Javascript
基于jPlayer三分屏的制作方法
2016/12/21 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
python实现代码行数统计示例分享
2014/02/10 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
Python可变参数函数用法实例
2015/07/07 Python
python实现狄克斯特拉算法
2019/01/17 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
python常用函数与用法示例
2019/07/02 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
网站域名和主机:Domain.com
2019/04/01 全球购物
优秀员工年终发言演讲稿
2014/01/01 职场文书
社区先进事迹材料
2014/05/19 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
教你怎么用Python实现多路径迷宫
2021/04/29 Python