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 相关文章推荐
一个程序下载的管理程序(二)
Oct 09 PHP
PHP制作图型计数器的例子
Oct 09 PHP
php 常用字符串函数总结
Mar 15 PHP
php MsSql server时遇到的中文编码问题
Jun 11 PHP
PHP时间戳与日期之间转换的实例介绍
Apr 19 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
php版微信自动登录并获取昵称的方法
Sep 23 PHP
php cookie用户登录的详解及实例代码
Jan 03 PHP
php str_replace替换指定次数的方法详解
May 05 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
PHP简单实现防止SQL注入的方法
Mar 13 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 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 SQLite类
2009/05/07 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
javascript 多浏览器 事件大全
2010/03/23 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
JQueryEasyUI Layout布局框架的使用
2013/04/08 Javascript
Jquery实现视频播放页面的关灯开灯效果
2013/05/27 Javascript
JS保存和删除cookie操作 判断cookie是否存在
2013/11/13 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
使用mint-ui开发项目的一些心得(分享)
2017/09/07 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
vue element 生成无线级左侧菜单的实现代码
2019/08/21 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
python错误处理详解
2014/09/28 Python
整理Python最基本的操作字典的方法
2015/04/24 Python
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
python如何读取bin文件并下发串口
2019/07/05 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
Python里面search()和match()的区别
2016/09/21 面试题
三方合作协议书范本
2014/04/18 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书