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 相关文章推荐
Dedecms常用函数解析
Feb 01 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
Jun 28 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
深入file_get_contents函数抓取内容失败的原因分析
Jun 25 PHP
对淘宝URL中ID提取的PHP代码
Sep 01 PHP
推荐一本PHP程序猿都应该拜读的书
Dec 31 PHP
PHP ajax 异步执行不等待执行结果的处理方法
May 27 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
Dec 16 PHP
WordPress开发中短代码的实现及相关函数使用技巧
Jan 05 PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 PHP
php中的常用魔术方法汇总
Feb 14 PHP
yii插入数据库防并发的简单代码
May 27 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
Laravel4中的Validator验证扩展用法详解
2016/07/26 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
JS控制一个DIV层在指定时间内消失的方法
2014/02/17 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
nodejs使用express获取get和post传值及session验证的方法
2017/11/09 NodeJs
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
2019/11/01 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
建筑工程技术应届生自荐信
2013/09/27 职场文书
学生实习自我鉴定
2013/10/11 职场文书
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
财务会计人员岗位职责
2013/11/30 职场文书
高分子材料与工程专业推荐信
2013/12/01 职场文书
科级干部考察材料
2014/02/15 职场文书
2014三八妇女节活动总结
2014/03/01 职场文书
三八妇女节标语
2014/10/09 职场文书
政风行风评议工作总结
2014/10/21 职场文书
事业单位考察材料范文
2014/12/25 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
建国大业观后感
2015/06/01 职场文书
2015暑假打工实践报告
2015/07/13 职场文书
心理健康教育主题班会
2015/08/13 职场文书
MySQL基础(二)
2021/04/05 MySQL
python如何利用traceback获取详细的异常信息
2021/06/05 Python