PHP 使用MySQL管理Session的回调函数详解


Posted in PHP onJune 21, 2013
<?php
 class MySession extends DBSQL {  /**
   * __construct()
   */
  public function __construct() {
   parent::__construct ();
  }
  /**
   * open()
   * 
   * @param <String> $sSavePath
   * @param <String>$sSessionNames
   * 
   * @return <Boolean> true
   */
  public function open($sSavePath, $sSessionName) {
   return true;
  }
  /**
   * close()
   */
  public function close() {
   return true;
  }
  /**
   * read()
   * 
   * @param <String> $sSessionId
   * @return <String> Session data or null on error...
   */
  public function read($sSessionId) {
   $sSessionId = addslashes(trim($sSessionId));
   $sSql = "SELECT * FROM tb_session WHERE F_SessionId = '{$sSessionId}'";
   //echo $sSql;
   if(false != ($result = $this->select($sSql))) {
    //var_dump($result[0]['F_SessionData']);
    return $result[0]['F_SessionData'];
   } else {
    return '';
   }
  }
  /**
   * write()
   * 
   * @param <String> $SessionId
   * @param <String> $sSessionData
   * 
   * @return <Boolean> true or false
   */
  public function write($sSessionId, $sSessionData) {
   $arrSession = array();
   $arrSession['F_SessionId'] = addslashes(trim($sSessionId));
   $arrSession['F_SessionData'] = addslashes($sSessionData);
   $arrSession['F_SessionCreated'] = date("Y-m-d H:i:s");
   $arrSession['F_SessionUpdated'] = date("Y-m-d H:i:s", time() + 1440);
   // 新session及更新的session
   if (false != ($result = $this->insertData('tb_session', $arrSession))) {
    return true;
   } else {
    $arrUpdateSession = array();
    $arrUpdateSession['F_SessionData'] = addslashes($sSessionData);
    $arrUpdateSession['F_SessionUpdated'] = date("Y-m-d H:i:s", time() + 1440);
    if (false != ($result = $this->updateData('tb_session', "'".addslashes($sSessionId)."'", 'F_SessionId', $arrUpdateSession))) {
     return true;
    } else {
     return false;
    }
   }
  }
  /**
   * destroy()
   * 
   * @param <String> $sSessionId
   * @return <Boolean> true
   */
  public function destroy($sSessionId) {
   $sSessionId = addslashes(trim($sSessionId)); 
   $this->delData($sSessionId, 'F_SessionId', 'tb_session');
   return true;
  }
  /**
   * gc
   * 
   * @param <int> $nMaxLifeTime seconds
   * 
   * @return <Boolean> true
   */
  public function gc($nMaxLifeTime) {
   $dtExpiredTime = date("Y-m-d H:i:s", time() - $nMaxLifeTime);
   $sSql = "DELETE FROM tb_session WHERE F_SessionUpdated < {$dtExpiredTime}";
   //echo $sSql;
   $this->delete($sSql);
   return true;
  }
  /**
   * __desctruct()
   *
   */
  function __destruct() {
   // ensure session data is written out before classes are destroyed
      // (see http://bugs.php.net/bug.php?id=33772 for details)
         @session_write_close();
     } // __destruct
 }
?>
PHP 相关文章推荐
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
Dec 16 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
May 04 PHP
rephactor 优秀的PHP的重构工具
Jun 09 PHP
PHP连接MongoDB示例代码
Sep 06 PHP
PHP swfupload图片上传的实例代码
Sep 30 PHP
php Session存储到Redis的方法
Nov 04 PHP
一个php短网址的生成代码(仿微博短网址)
May 07 PHP
php静态文件返回304技巧分享
Jan 06 PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 PHP
PHP中set_include_path()函数相关用法分析
Jul 18 PHP
thinkPHP中volist标签用法示例
Dec 06 PHP
Laravel 模型关联基础教程详解
Sep 17 PHP
解析PHP中一些可能会被忽略的问题
Jun 21 #PHP
关于PHP堆栈与列队的学习
Jun 21 #PHP
浅析PHP 按位与或 (^ 、&amp;)
Jun 21 #PHP
浅析PHP中Collection 类的设计
Jun 21 #PHP
解析PHP无限级分类方法及代码
Jun 21 #PHP
PHP 循环删除无限分类子节点的实现代码
Jun 21 #PHP
解析左右值无限分类的实现算法
Jun 20 #PHP
You might like
用PHP伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
浅析PHP文件下载原理
2014/12/25 PHP
Laravel Reponse响应客户端示例详解
2020/09/03 PHP
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
使用vue2.0创建的项目的步骤方法
2018/09/25 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
2020/04/16 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
python利用正则表达式提取字符串
2016/12/08 Python
Python 实现微信防撤回功能
2019/04/29 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
css3类选择器之结合元素选择器和多类选择器用法
2017/03/09 HTML / CSS
CSS3颜色值RGBA与渐变色使用介绍
2020/03/06 HTML / CSS
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
Levi’s西班牙官方网站:李维斯,著名的牛仔裤品牌
2020/08/20 全球购物
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
民族团结先进个人材料
2014/02/05 职场文书
跳槽求职信范文
2014/05/26 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
python引入其他文件夹下的py文件具体方法
2021/05/23 Python
Javascript设计模式之原型模式详细
2021/10/05 Javascript
使用Nginx的访问日志统计PV与UV
2022/05/06 Servers
详解MySQL的内连接和外连接
2023/05/08 MySQL