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中$_SERVER的详细参数与说明
Jul 29 PHP
PHP实现今天是星期几的几种写法
Sep 26 PHP
php遍历目录方法小结
Mar 10 PHP
php实现微信公众平台账号自定义菜单类
Oct 11 PHP
PHP请求Socket接口测试实例
Aug 12 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
PDO的安全处理与事物处理方法
Oct 31 PHP
golang 调用 php7详解及实例
Jan 04 PHP
微信第三方登录(原生)demo【必看篇】
May 26 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
PHP的mysqli_sqlstate()函数讲解
Jan 23 PHP
PHP fclose函数用法总结
Feb 15 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&amp;mysql(一)
2006/10/09 PHP
php获取url字符串截取路径的文件名和扩展名的函数
2010/01/22 PHP
php+ajax登录跳转登录实现思路
2016/07/31 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
js相册效果代码(点击创建即可)
2013/04/16 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
学习使用Bootstrap输入框、导航、分页等常用组件
2017/05/11 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
微信小程序之批量上传并压缩图片的实例代码
2018/07/05 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
2020/08/05 Javascript
解决vue打包 npm run build-test突然不动了的问题
2020/11/13 Javascript
详解JavaScript中分解数字的三种方法
2021/01/05 Javascript
python杀死一个线程的方法
2015/09/06 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
django 修改server端口号的方法
2018/05/14 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
2019/11/25 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
2014年上半年工作自我评价
2014/01/18 职场文书
党风廉政建设责任书
2014/04/14 职场文书
和睦家庭事迹
2014/05/14 职场文书
领导干部廉政自律承诺书
2014/05/26 职场文书
2014年公司工作总结
2014/11/22 职场文书
换届选举主持词
2015/07/03 职场文书
车间班组长竞聘书
2015/09/15 职场文书
预防职务犯罪警示教育心得体会
2016/01/15 职场文书
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL