PHP 使用MySQL管理Session的回调函数详解
author:一佰互联 2019-04-29   click:171
复制代码 代码如下:
<?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
 }
?>