PHP 使用MySQL管理Session的回调函数详解

yipeiwu_com7年前Mysql基础
复制代码 代码如下:

<?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结合mysql与mysqli扩展处理事务的方法

本文实例讲述了php结合mysql与mysqli扩展处理事务的方法。分享给大家供大家参考,具体如下: 以下只是展示如何应用,具体用的时候要加上判断,如果都执行成功则提交,否则回滚 看前先...

PHP+Mysql+jQuery实现发布微博程序 jQuery篇

PHP+Mysql+jQuery实现发布微博程序 jQuery篇

该应用实现了即时统计输入字数,并且通过ajax与后台交互,将输入内容插入到话题列表中。我将整个流程分为两部分,本文讲解第一部分jquery实现前端交互操作。 首先查看示例:DEMO X...

PHP中使用sleep造成mysql读取失败的案例和解决方法

近日,由于项目需求 需要用到sleep函数定时从数据库取一堆数据出来去执行某些操作。 sleep等待的时间至少有一个小时以上 此前做过测试 用sleep函数去完成数小时后执行的操作是可行...

PHP把MSSQL数据导入到MYSQL的方法

本文实例讲述了PHP把MSSQL数据导入到MYSQL的方法。分享给大家供大家参考。具体分析如下: 最近需要把一个以前的asp网站转换成php的,但php是与mysql而我的asp与mss...

php下将图片以二进制存入mysql数据库中并显示的实现代码

//保存图片到数据库的php代码 复制代码 代码如下: If($Picture != "none") { $PSize = filesize($Picture); $mysqlPictu...