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的autoLoad自动加载机制
Sep 27 PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
php缓存技术详细总结
Aug 07 PHP
php解析json数据实例
Aug 19 PHP
Yii查询生成器(Query Builder)用法实例教程
Sep 04 PHP
详谈PHP文件目录基础操作
Nov 11 PHP
php在数组中查找指定值的方法
Mar 17 PHP
php中使用sftp教程
Mar 30 PHP
深入讲解PHP Session及如何保持其不过期的方法
Aug 18 PHP
深入讲解PHP的对象注入(Object Injection)
Mar 01 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 PHP
PHP实现15位身份证号转18位的方法分析
Oct 16 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导出CSV抽象类实例
2014/09/24 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
Jquery弹出窗口插件 LeanModal的使用方法
2012/03/10 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
JS动态给对象添加事件的简单方法
2016/07/19 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
JQuery绑定事件四种实现方法解析
2020/12/02 jQuery
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
使用python解析xml成对应的html示例分享
2014/04/02 Python
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
2014年五一促销活动方案
2014/03/09 职场文书
小学优秀教育工作者事迹材料
2014/05/09 职场文书
水电站项目建议书
2014/05/12 职场文书
公司户外活动总结
2014/07/04 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
电影圆明园观后感
2015/06/03 职场文书
首都博物馆观后感
2015/06/05 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书
MySQL数据迁移相关总结
2021/04/29 MySQL