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 CURL用法的深入分析
Jun 09 PHP
php一次性删除前台checkbox多选内容的方法
Sep 22 PHP
php数组转换js数组操作及json_encode的用法详解
Oct 26 PHP
php GUID生成函数和类
Mar 10 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 PHP
php+mysql查询优化简单实例
Jan 13 PHP
php 5.6版本中编写一个PHP扩展的简单示例
Jan 20 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
Oct 08 PHP
详解PHP序列化反序列化的方法
Oct 27 PHP
PHP翻页跳转功能实现方法
Nov 30 PHP
微信 getAccessToken方法详解及实例
Nov 23 PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 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 Undefined index的问题
2009/06/01 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
Yii框架常见缓存应用实例小结
2019/09/09 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
JSQL 批量图片切换的实现代码
2010/05/05 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
2017/04/10 jQuery
手写简单的jQuery雪花飘落效果实例
2018/04/22 jQuery
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
2019/09/05 Javascript
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
Python with标签使用方法解析
2020/01/17 Python
pycharm 设置项目的根目录教程
2020/02/12 Python
pytorch之Resize()函数具体使用详解
2020/02/27 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
2020/03/30 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
css3 线性渐变和径向渐变示例附图
2014/04/08 HTML / CSS
锐步英国官网:Reebok英国
2019/11/29 全球购物
毕业生求职推荐信
2013/11/04 职场文书
计算机专业大学生的自我评价
2013/11/14 职场文书
劳资专员岗位职责
2013/12/27 职场文书
出纳担保书范文
2014/04/02 职场文书
《大作家的小老师》教学反思
2014/04/16 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
个人工作能力自我评价
2015/03/05 职场文书
教师研修随笔感言
2015/11/18 职场文书
导游词之广西漓江
2019/11/02 职场文书
springcloud之Feign超时问题的解决
2021/06/24 Java/Android