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 相关文章推荐
第八节 访问方式 [8]
Oct 09 PHP
PHP无刷新上传文件实现代码
Sep 19 PHP
Yii中使用PHPExcel导出Excel的方法
Dec 26 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
php验证码的制作思路和实现方法
Nov 12 PHP
微信公众平台DEMO(PHP)
May 04 PHP
php遍历解析xml字符串的方法
May 05 PHP
PHP实现统计在线人数功能示例
Oct 15 PHP
php面向对象之反射功能与用法分析
Mar 29 PHP
PHP实现Session入库/存入redis的方法
May 04 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
PHP设计模式之命令模式示例详解
Dec 20 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转盘抽奖接口实例
2015/02/09 PHP
PHP whois查询类定义与用法示例
2019/04/03 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
取得传值的函数
2006/10/27 Javascript
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
javascript基本算法汇总
2016/03/09 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
Vue formData实现图片上传
2019/08/20 Javascript
js实现页面图片消除效果
2020/03/24 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
Vue router安装及使用方法解析
2020/12/02 Vue.js
在Python中marshal对象序列化的相关知识
2015/07/01 Python
Python连接DB2数据库
2016/08/27 Python
python中map()函数的使用方法示例
2017/09/29 Python
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
python docx 中文字体设置的操作方法
2018/05/08 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
python根据多个文件名批量查找文件
2019/08/13 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
使用css3制作动感导航条示例
2014/01/26 HTML / CSS
CSS3的常见transformation图形变化用法小结
2016/05/13 HTML / CSS
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
经典c++面试题五
2014/12/17 面试题
业务经理的岗位职责
2013/11/16 职场文书
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
销售部主管岗位职责
2013/12/18 职场文书
大学生村官心得体会范文
2014/01/04 职场文书
校车司机安全责任书
2015/05/11 职场文书
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL
Python学习之os包使用教程详解
2022/03/21 Python
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL