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
php初学者写及时补给skype用户充话费的小程序
Nov 02 PHP
PHP strncasecmp字符串比较的小技巧
Jan 04 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
php数据类型判断函数有哪些
Sep 23 PHP
单台服务器的PHP进程之间实现共享内存的方法
Jun 13 PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 PHP
Symfony2框架学习笔记之表单用法详解
Mar 18 PHP
PHP性能测试工具xhprof安装与使用方法详解
Apr 29 PHP
购物车实现的几种方式优缺点对比
May 02 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 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
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
2019/02/16 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
javascript数组的扩展实现代码集合
2008/06/01 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
Js实现手机发送验证码时按钮延迟操作
2014/06/20 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
通用无限极下拉菜单的实现代码
2016/05/31 Javascript
20分钟打造属于你的Bootstrap站点
2016/07/27 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
react实现点击选中的li高亮的示例代码
2018/05/24 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
Vue插件之滑动验证码
2019/09/21 Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
2020/08/06 Javascript
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
在Django的视图中使用数据库查询的方法
2015/07/16 Python
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
Python正则表达式匹配数字和小数的方法
2019/07/03 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
Python连接Impala实现步骤解析
2020/08/04 Python
用python写PDF转换器的实现
2020/10/29 Python
与世界上最好的跑步专业品牌合作:Fleet Feet
2019/03/22 全球购物
Interhome丹麦:在线预订度假屋和公寓
2019/07/18 全球购物
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
幼教个人求职信范文
2013/12/02 职场文书
社区戒毒工作方案
2014/06/04 职场文书
劳模事迹材料范文
2014/12/24 职场文书
刑事上诉状范文
2015/05/22 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书
Django集成富文本编辑器summernote的实现步骤
2021/05/31 Python