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屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
Mar 06 PHP
探讨PHP删除文件夹的三种方法
Jun 09 PHP
php简单的留言板与回复功能具体实现
Feb 19 PHP
php遍历文件夹和文件列表示例分享
Mar 11 PHP
浅谈本地WAMP环境的搭建
May 13 PHP
php解决DOM乱码的方法示例代码
Nov 20 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
Feb 09 PHP
总结的一些PHP开发中的tips(必看篇)
Mar 24 PHP
利用Laravel事件系统如何实现登录日志的记录详解
May 20 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 06 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
Jun 14 PHP
PHP大文件及断点续传下载实现代码
Aug 18 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中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
基于javascript实现窗口抖动效果
2016/01/03 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
同步异步动态引入js文件的几种方法总结
2016/09/23 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
js实现扫雷小程序的示例代码
2017/09/27 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
Nodejs使用Mongodb存储与提供后端CRD服务详解
2018/09/04 NodeJs
JS正则表达式封装与使用操作示例
2019/05/15 Javascript
前端Electron新手入门教程详解
2019/06/21 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
python获取Pandas列名的几种方法
2019/08/07 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
2020/06/22 Python
HTML5实现WebSocket协议原理浅析
2014/07/07 HTML / CSS
2014年中班元旦活动方案
2014/02/14 职场文书
工作作风建设心得体会
2014/10/22 职场文书