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 相关文章推荐
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
Mar 28 PHP
PHP关联数组的10个操作技巧
Jan 21 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
php把session写入数据库示例
Feb 26 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
Apr 08 PHP
用PHP代替JS玩转DOM的思路及示例代码
Jun 15 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
Dec 09 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
May 12 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
Jan 08 PHP
php5.3后静态绑定用法详解
Nov 11 PHP
php把字符串指定字符分割成数组的方法
Mar 12 PHP
php的无刷新操作实现方法分析
Feb 28 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
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
删除数组元素实用的PHP数组函数
2008/08/18 PHP
rrmdir php中递归删除目录及目录下的文件
2011/05/15 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
无缝滚动js代码通俗易懂(自写)
2013/06/19 Javascript
js替代copy(示例代码)
2013/11/27 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
AngularJs Forms详解及简单示例
2016/09/01 Javascript
getElementById().innerHTML与getElementById().value的区别
2016/10/27 Javascript
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
webpack4 css打包压缩问题的解决
2018/05/18 Javascript
微信小程序实现顶部导航特效
2019/01/28 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
Nodejs 识别图片类型的方法
2019/08/15 NodeJs
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
Python 解析XML文件
2009/04/15 Python
用Python进行基础的函数式编程的教程
2015/03/31 Python
各个系统下的Python解释器相关安装方法
2015/10/12 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
python网络爬虫实现发送短信验证码的方法
2021/02/25 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
JAVA和C++区别都有哪些
2015/03/30 面试题
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
办公室秘书自我鉴定
2014/01/18 职场文书
校园安全检查制度
2014/02/03 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
社区国庆节活动总结
2015/03/23 职场文书
python playwright 自动等待和断言详解
2021/11/27 Python