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详细彻底学习Smarty
Mar 27 PHP
php下目前为目最全的CURL中文说明
Aug 01 PHP
PHP访问MYSQL数据库封装类(附函数说明)
Dec 04 PHP
php数组函数序列之array_keys() - 获取数组键名
Oct 30 PHP
php中sprintf与printf函数用法区别解析
Feb 17 PHP
PHP自带函数给数字或字符串自动补齐位数
Jul 29 PHP
php编写的一个E-mail验证类
Mar 25 PHP
PHP使用array_merge重新排列数组下标的方法
Jul 22 PHP
四个常见html网页乱码问题及解决办法
Sep 08 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
Jul 01 PHP
Netbeans 8.2与PHP相关的新特性介绍
Oct 08 PHP
laravel异步监控定时调度器实例详解
Jun 21 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
德生PL330的评价与改造
2021/03/02 无线电
mayfish 数据入库验证代码
2010/04/30 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
javascript中的3种继承实现方法
2016/01/27 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
vue实现微信分享朋友圈,发送朋友的示例讲解
2018/02/10 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
Vue自定义toast组件的实例代码
2018/08/15 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
python 数据清洗之数据合并、转换、过滤、排序
2017/02/12 Python
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
Python实现登陆文件验证方法
2018/10/06 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
python实现对变位词的判断方法
2020/04/05 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
2020/06/22 Python
python中把元组转换为namedtuple方法
2020/12/09 Python
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
Sunglasses Shop荷兰站:英国最大的太阳镜独立在线零售商和供应商
2017/01/08 全球购物
乌克兰在线商店的价格比较:Price.ua
2019/07/26 全球购物
模范教师事迹材料
2014/02/10 职场文书
入党思想汇报怎么写
2014/04/03 职场文书
微电影大赛策划方案
2014/06/05 职场文书
公司劳动纪律管理制度
2015/08/04 职场文书
python tkinter Entry控件的焦点移动操作
2021/05/22 Python
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS
Django框架中视图的用法
2022/06/10 Python