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 相关文章推荐
让你同时上传 1000 个文件 (一)
Oct 09 PHP
自动生成文章摘要的代码[PHP 版本]
Mar 20 PHP
php对大文件进行读取操作的实现代码
Jan 23 PHP
浅析PHP中Collection 类的设计
Jun 21 PHP
使用图灵api创建微信聊天机器人
Jul 23 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
Apr 12 PHP
php进程间通讯实例分析
Jul 11 PHP
php 判断字符串编码是utf-8 或gb2312实例
Nov 01 PHP
thinkPHP简单调用函数与类库的方法
Mar 15 PHP
PHP将数据导出Excel表中的实例(投机型)
Jul 31 PHP
PHP开发实现微信退款功能示例
Nov 25 PHP
PHP封装的page分页类定义与用法完整示例
Dec 24 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
第八节 访问方式 [8]
2006/10/09 PHP
php实现mysql同步的实现方法
2009/10/21 PHP
php面向对象 字段的声明与使用
2012/06/14 PHP
自定义php类(查找/修改)xml文档
2013/03/26 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
2013/06/17 PHP
解析PHP中的正则表达式以及模式匹配
2013/06/19 PHP
php正则匹配html中带class的div并选取其中内容的方法
2015/01/13 PHP
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
javascript 打开页面window.location和window.open的区别
2010/03/17 Javascript
jquery ajax 局部无刷新更新数据的实现案例
2014/02/08 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
浅谈Angular.js中使用$watch监听模型变化
2017/01/10 Javascript
解决vue-cli中stylus无法使用的问题方法
2017/06/19 Javascript
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
python分析网页上所有超链接的方法
2015/05/08 Python
Python argv用法详解
2016/01/08 Python
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
python实现按任意键继续执行程序
2016/12/30 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
基于Python函数和变量名解析
2019/07/19 Python
python map比for循环快在哪
2020/09/21 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
开放系统互连参考模型
2016/06/29 面试题
大四自我鉴定范文
2013/10/06 职场文书
档案接收函
2014/01/13 职场文书
小学教师管理制度
2014/01/18 职场文书
学生周末长期请假条
2014/02/15 职场文书
广告设计应届生求职信
2014/03/01 职场文书
骨干教师考核方案
2014/05/09 职场文书
汉语专业毕业生自荐信
2014/07/06 职场文书
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers