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 mssql 时间格式问题
Jan 13 PHP
PHP中使用CURL伪造来路抓取页面或文件
May 04 PHP
PHP原生模板引擎 最简单的模板引擎
Apr 25 PHP
PHP抓屏函数实现屏幕快照代码分享
Jan 02 PHP
ThinkPHP有变量的where条件分页实例
Nov 03 PHP
Laravel最佳分割路由文件(routes.php)的方式
Aug 04 PHP
PHP简单字符串过滤方法示例
Sep 04 PHP
php微信支付之公众号支付功能
May 30 PHP
PHP常用日期加减计算方法实例小结
Jul 31 PHP
PHP实现负载均衡的加权轮询方法分析
Aug 22 PHP
php中的explode()函数实例介绍
Jan 18 PHP
php判断IP地址是否在多个IP段内
Aug 18 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中count获取多维数组长度的方法
2014/11/03 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
php查询内存信息操作示例
2019/05/09 PHP
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
微信小程序商城项目之购物数量加减(3)
2017/04/17 Javascript
原JS实现banner图的常用功能
2017/06/12 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
生产制造追溯系统之在线打印功能
2019/06/03 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
vue过滤器实现日期格式化的案例分析
2020/07/02 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
Python查询Mysql时返回字典结构的代码
2012/06/18 Python
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
python实现数据库跨服务器迁移
2018/04/12 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
Python selenium模拟手动操作实现无人值守刷积分功能
2020/05/13 Python
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
个人简历的自荐信
2013/10/23 职场文书
协议书模板
2014/04/23 职场文书
社区综治工作汇报
2014/10/27 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
停课通知书
2015/04/24 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书
Python 可迭代对象 iterable的具体使用
2021/08/07 Python