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 相关文章推荐
smarty实例教程
Nov 19 PHP
PHP的中问验证码
Nov 25 PHP
使用JSON实现数据的跨域传输的php代码
Dec 20 PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 PHP
php中3种方法删除字符串中间的空格
Mar 10 PHP
php上传图片存入数据库示例分享
Mar 11 PHP
WordPress中缩略图的使用以及相关技巧
Nov 24 PHP
PHP单例模式是什么 php实现单例模式的方法
May 14 PHP
php实现转换html格式为文本格式的方法
May 16 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
May 27 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
Sep 14 PHP
php结合md5的加密解密算法实例
Sep 30 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
eAccelerator的安装与使用详解
2013/06/13 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
2014/08/22 PHP
几个实用的PHP内置函数使用指南
2014/11/27 PHP
PHP往XML中添加节点的方法
2015/03/12 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
Yii数据库缓存实例分析
2016/03/29 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
2019/10/17 PHP
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
js简易namespace管理器 实例代码
2013/06/21 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
2015/01/28 Javascript
ES6中Array.find()和findIndex()函数的用法详解
2017/09/16 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
webpack项目轻松混用css module的方法
2018/06/12 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
深入理解JavaScript 箭头函数
2019/05/30 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
selenium3+python3环境搭建教程图解
2018/12/07 Python
解决python写入带有中文的字符到文件错误的问题
2019/01/31 Python
python实现爬取百度图片的方法示例
2019/07/06 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
2019/09/16 Python
Python内置异常类型全面汇总
2020/05/28 Python
Python smtp邮件发送模块用法教程
2020/06/15 Python
python基于win32api实现键盘输入
2020/12/09 Python
css3 实现滚动条美化效果的实例代码
2021/01/06 HTML / CSS
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
娇韵诗俄罗斯官方网站:Clarins俄罗斯
2020/10/03 全球购物
采购部部门职责
2013/12/15 职场文书
2014年优质护理服务工作总结
2014/11/14 职场文书
学术会议开幕词
2016/03/03 职场文书
教你怎么用Python操作MySql数据库
2021/05/31 Python
virtualenv隔离Python环境的问题解析
2022/06/21 Python