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 相关文章推荐
ThinkPHP利用PHPMailer实现邮件发送实现代码
Sep 26 PHP
zend optimizer在wamp的基础上安装图文教程
Oct 26 PHP
PHP学习笔记(一) 简单了解PHP
Aug 04 PHP
PHP比你想象的好得多
Nov 27 PHP
PHP中isset与array_key_exists的区别实例分析
Jun 02 PHP
Zend Framework框架Smarty扩展实现方法
Mar 22 PHP
php日期操作技巧小结
Jun 25 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
PHP自定义函数实现数组比较功能示例
Oct 19 PHP
PHP常量define和const的区别详解
May 18 PHP
Laravel实现ORM带条件搜索分页
Oct 24 PHP
jQuery+PHP实现图片上传并提交功能
Jul 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
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
PHP面向对象概念
2011/11/06 PHP
解析PHP处理换行符的问题 \r\n
2013/06/13 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
js 日期比较相关天数代码
2014/04/02 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
2020/11/16 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
python中pygame模块用法实例
2014/10/09 Python
python登录豆瓣并发帖的方法
2015/07/08 Python
python django 访问静态文件出现404或500错误
2017/01/20 Python
Python正确重载运算符的方法示例详解
2017/08/27 Python
Python实现的栈(Stack)
2018/01/26 Python
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
德国滑雪和户外用品网上商店:XSPO
2019/10/30 全球购物
幼教求职信
2014/03/12 职场文书
党员岗位承诺书
2014/03/25 职场文书
学院党的群众路线教育实践活动第一阶段情况汇报
2014/10/25 职场文书
红楼梦读书笔记
2015/06/25 职场文书
员工聘用合同范本
2015/09/21 职场文书
Python进阶学习之带你探寻Python类的鼻祖-元类
2021/05/08 Python
详解java如何集成swagger组件
2021/06/21 Java/Android
SpringBoot中获取profile的方法详解
2022/04/08 Java/Android