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 相关文章推荐
APMServ使用说明
Oct 23 PHP
php SQL防注入代码集合
Apr 25 PHP
PHP分页函数代码(简单实用型)
Dec 02 PHP
基于PHP对XML的操作详解
Jun 07 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
Apr 29 PHP
php通过修改header强制图片下载的方法
Mar 24 PHP
php中Snoopy类用法实例
Jun 19 PHP
php无限分类使用concat如何实现
Nov 05 PHP
在WordPress中使用wp-cron插件来设置定时任务
Dec 10 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
Laravel框架之解决前端显示图片问题
Oct 24 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 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
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
2016/04/03 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
2017/05/23 Javascript
vue-property-decorator用法详解
2019/12/12 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
Python中str is not callable问题详解及解决办法
2017/02/10 Python
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
Django中url的反向查询的方法
2018/03/14 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
Python greenlet和gevent使用代码示例解析
2020/04/01 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
自我鉴定的范文
2013/10/03 职场文书
实习心得体会
2014/01/02 职场文书
企业内部培训方案
2014/02/04 职场文书
机械工程学院大学生求职信
2014/05/25 职场文书
2015年个人招商工作总结
2015/04/25 职场文书
国王的演讲观后感
2015/06/03 职场文书
解除合同协议书范本
2016/03/21 职场文书