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 相关文章推荐
Windows下PHP的任意文件执行漏洞
Oct 09 PHP
Discuz!下Memcache缓存实现方法
May 28 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
May 19 PHP
php实现查询百度google收录情况(示例代码)
Aug 02 PHP
PHP实现算式验证码和汉字验证码实例
Mar 09 PHP
php跨服务器访问方法小结
May 12 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 PHP
PHP实现上传图片到 zimg 服务器
Oct 19 PHP
使用PHP免费发送定时短信的实例
Oct 24 PHP
PHP编辑器PhpStrom运行缓慢问题
Feb 21 PHP
详解PHP变量传值赋值和引用赋值变量销毁
Mar 23 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 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中=赋值操作符对不同数据类型的不同行为
2011/01/02 PHP
php header功能的使用
2013/10/28 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
PHP实现对数组分页处理实例详解
2017/02/07 PHP
PHP Include文件实例讲解
2019/02/15 PHP
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
jQuery实现div拖拽效果实例分析
2016/02/20 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
vue实现购物车结算功能
2020/06/18 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
Vue中component标签解决项目组件化操作
2020/09/04 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
python条件和循环的使用方法
2013/11/01 Python
Python解析xml中dom元素的方法
2015/03/12 Python
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
Python中元组,列表,字典的区别
2017/05/21 Python
python3操作mysql数据库的方法
2017/06/23 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
使用索引(Index)有哪些需要考虑的因素
2016/10/19 面试题
幼儿园老师寄语
2014/04/03 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
Django Paginator分页器的使用示例
2021/06/23 Python
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android
Python 的 sum() Pythonic 的求和方法详细
2021/10/16 Python
浅析Python OpenCV三种滤镜效果
2022/04/11 Python
如何vue使用el-table遍历循环表头和表体数据
2022/04/26 Vue.js