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 相关文章推荐
复杂检索数据并分页显示的处理方法
Oct 09 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
Jun 25 PHP
ThinkPHP的URL重写问题
Jun 22 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
Jan 04 PHP
PHP中iconv函数知识汇总
Jul 02 PHP
功能强大的php分页函数
Jul 20 PHP
PHP类相关知识点实例总结
Sep 28 PHP
PHP实现QQ快速登录的方法
Sep 28 PHP
php中序列化与反序列化详解
Feb 13 PHP
mac os快速切换多个PHP版本的方法
Mar 07 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 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 chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
PHP 图片文件上传实现代码
2010/12/29 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
php实现微信支付之企业付款
2018/05/30 PHP
js 创建书签小工具之理论
2011/02/25 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
SeaJS入门教程系列之使用SeaJS(二)
2014/03/03 Javascript
jquery 选取方法都有哪些
2014/05/18 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
React Native实现简单的登录功能(推荐)
2016/09/19 Javascript
javascript中Number的方法小结
2016/11/21 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
详解如何使用koa实现socket.io官网的例子
2018/11/04 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
2020/04/28 Javascript
Python实现去除代码前行号的方法
2015/03/10 Python
python中sys.argv函数精简概括
2018/07/08 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
详解Python中is和==的区别
2019/03/21 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
python tkinter基本属性详解
2019/09/16 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
2021/01/06 Python
Expedia加拿大官方网站:加拿大最大的在线旅游提供商
2017/12/31 全球购物
英国家庭珠宝商:T. H. Baker
2018/02/08 全球购物
adidas泰国官网:adidas TH
2020/07/11 全球购物
国际贸易专业个人求职信格式
2014/02/02 职场文书
法人代表委托书
2014/04/04 职场文书
五年级学生评语
2014/04/22 职场文书
社区综治工作汇报
2014/10/27 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书
Dashboard管理Kubernetes集群与API访问配置
2022/04/01 Servers