Source for file SC_Helper_Session.php

Documentation is available at SC_Helper_Session.php

  1. <?php
  2.  /*
  3.   * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
  4.   *
  5.   * http://www.lockon.co.jp/
  6.   */
  7.  
  8.  /**
  9.   * セッション関連のヘルパークラス.
  10.   *
  11.   * @package Helper
  12.   * @author LOCKON CO.,LTD.
  13.   * @version $Id: SC_Helper_Session.php 17476 2008-07-29 11:30:17Z Seasoft $
  14.   */
  15.  
  16.     var $objDb;
  17.  
  18.      // }}}
  19.      // {{{ constructor
  20.  
  21.      /**
  22.       * デフォルトコンストラクタ.
  23.       *
  24.       * 各関数をセッションハンドラに保存する
  25.       */
  26.      function SC_Helper_Session({
  27.          $this->objDb = new SC_Helper_DB_Ex();
  28.          session_set_save_handler(array(&$this"sfSessOpen"),
  29.                                   array(&$this"sfSessClose"),
  30.                                   array(&$this"sfSessRead"),
  31.                                   array(&$this"sfSessWrite"),
  32.                                   array(&$this"sfSessDestroy"),
  33.                                   array(&$this"sfSessGc"));
  34.      }
  35.  
  36.      // }}}
  37.      // {{{ functions
  38.  
  39.      /**
  40.       * セッションを開始する.
  41.       *
  42.       * @param string $save_path セッションを保存するパス(使用しない)
  43.       * @param string $session_name セッション名(使用しない)
  44.       * @return bool セッションが正常に開始された場合 true
  45.       */
  46.      function sfSessOpen($save_path$session_name{
  47.          return true;
  48.      }
  49.  
  50.      /**
  51.       * セッションを閉じる.
  52.       *
  53.       * @return bool セッションが正常に終了した場合 true
  54.       */
  55.      function sfSessClose({
  56.          return true;
  57.      }
  58.  
  59.      /**
  60.       * セッションのデータををDBから読み込む.
  61.       *
  62.       * @param string $id セッションID
  63.       * @return string セッションデータの値
  64.       */
  65.      function sfSessRead($id{
  66.          if (!$this->objDb->sfTabaleExists("dtb_session")) return '';
  67.          $objQuery new SC_Query();
  68.          $arrRet $objQuery->select("sess_data""dtb_session""sess_id = ?"array($id));
  69.          if (empty($arrRet)) {
  70.              return '';
  71.          else {
  72.              return $arrRet[0]['sess_data'];
  73.          }
  74.      }
  75.  
  76.      /**
  77.       * セッションのデータをDBに書き込む.
  78.       *
  79.       * @param string $id セッションID
  80.       * @param string $sess_data セッションデータの値
  81.       * @return bool セッションの書き込みに成功した場合 true
  82.       */
  83.      function sfSessWrite($id$sess_data)
  84.      {
  85.          if (!$this->objDb->sfTabaleExists("dtb_session")) return false;
  86.          $objQuery new SC_Query();
  87.          $count $objQuery->count("dtb_session""sess_id = ?"array($id));
  88.          $sqlval array();
  89.          if($count 0{
  90.              // レコード更新
  91.              $sqlval['sess_data'$sess_data;
  92.              $sqlval['update_date''Now()';
  93.              $objQuery->update("dtb_session"$sqlval"sess_id = ?"array($id));
  94.          else {
  95.              // セッションデータがある場合は、レコード作成
  96.              if(strlen($sess_data0{
  97.                  $sqlval['sess_id'$id;
  98.                  $sqlval['sess_data'$sess_data;
  99.                  $sqlval['update_date''Now()';
  100.                  $sqlval['create_date''Now()';
  101.                  $objQuery->insert("dtb_session"$sqlval);
  102.              }
  103.          }
  104.          return true;
  105.      }
  106.  
  107.      // セッション破棄
  108.  
  109.      /**
  110.       * セッションを破棄する.
  111.       *
  112.       * @param string $id セッションID
  113.       * @return bool セッションを正常に破棄した場合 true
  114.       */
  115.      function sfSessDestroy($id{
  116.          if (!$this->objDb->sfTabaleExists("dtb_session")) return false;
  117.          $objQuery new SC_Query();
  118.          $objQuery->delete("dtb_session""sess_id = ?"array($id));
  119.          return true;
  120.      }
  121.  
  122.      /**
  123.       * ガーベジコレクションを実行する.
  124.       *
  125.       * 引数 $maxlifetime の代りに 定数 MAX_LIFETIME を使用する.
  126.       *
  127.       * @param integer $maxlifetime セッションの有効期限(使用しない)
  128.       */
  129.      function sfSessGc($maxlifetime{
  130.          // MAX_LIFETIME以上更新されていないセッションを削除する。
  131.          if (!$this->objDb->sfTabaleExists("dtb_session")) return false;
  132.          $objQuery new SC_Query();
  133.          $where "update_date < current_timestamp + '-"MAX_LIFETIME " secs'";
  134.          $objQuery->delete("dtb_session"$where);
  135.          return true;
  136.     }
  137. }
  138. ?>

Documentation generated on Tue, 28 Apr 2009 18:13:32 +0900 by phpDocumentor 1.4.2