- Timestamp:
- 2014/06/02 15:12:19 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_13-dev/data/class/helper/SC_Helper_Session.php
r23492 r23493 15 15 class SC_Helper_Session 16 16 { 17 public $objDb;18 19 /**20 * デフォルトコンストラクタ.21 *22 * 各関数をセッションハンドラに保存する23 */24 public function __construct()25 {26 $this->objDb = new SC_Helper_DB_Ex();27 session_set_save_handler(array(&$this, 'sfSessOpen'),28 array(&$this, 'sfSessClose'),29 array(&$this, 'sfSessRead'),30 array(&$this, 'sfSessWrite'),31 array(&$this, 'sfSessDestroy'),32 array(&$this, 'sfSessGc'));33 34 // 通常よりも早い段階(オブジェクトが破棄される前)でセッションデータを書き込んでセッションを終了する35 // XXX APC による MDB2 の破棄タイミングによる不具合を回避する目的36 register_shutdown_function('session_write_close');37 }38 39 /**40 * セッションを開始する.41 *42 * @param string $save_path セッションを保存するパス(使用しない)43 * @param string $session_name セッション名(使用しない)44 * @return bool セッションが正常に開始された場合 true45 */46 public function sfSessOpen($save_path, $session_name)47 {48 return true;49 }50 51 /**52 * セッションを閉じる.53 *54 * @return bool セッションが正常に終了した場合 true55 */56 public function sfSessClose()57 {58 return true;59 }60 61 /**62 * セッションのデータをDBから読み込む.63 *64 * @param string $id セッションID65 * @return string セッションデータの値66 */67 public function sfSessRead($id)68 {69 $objQuery =& SC_Query_Ex::getSingletonInstance();70 $arrRet = $objQuery->select('sess_data', 'dtb_session', 'sess_id = ?', array($id));71 if (empty($arrRet)) {72 return '';73 } else {74 return $arrRet[0]['sess_data'];75 }76 }77 78 /**79 * セッションのデータをDBに書き込む.80 *81 * @param string $id セッションID82 * @param string $sess_data セッションデータの値83 * @return bool セッションの書き込みに成功した場合 true84 */85 public function sfSessWrite($id, $sess_data)86 {87 $objQuery =& SC_Query_Ex::getSingletonInstance();88 $exists = $objQuery->exists('dtb_session', 'sess_id = ?', array($id));89 $sqlval = array();90 if ($exists) {91 // レコード更新92 $sqlval['sess_data'] = $sess_data;93 $sqlval['update_date'] = 'CURRENT_TIMESTAMP';94 $objQuery->update('dtb_session', $sqlval, 'sess_id = ?', array($id));95 } else {96 // セッションデータがある場合は、レコード作成97 if (strlen($sess_data) > 0) {98 $sqlval['sess_id'] = $id;99 $sqlval['sess_data'] = $sess_data;100 $sqlval['update_date'] = 'CURRENT_TIMESTAMP';101 $sqlval['create_date'] = 'CURRENT_TIMESTAMP';102 $objQuery->insert('dtb_session', $sqlval);103 }104 }105 106 return true;107 }108 109 // セッション破棄110 111 /**112 * セッションを破棄する.113 *114 * @param string $id セッションID115 * @return bool セッションを正常に破棄した場合 true116 */117 public function sfSessDestroy($id)118 {119 $objQuery =& SC_Query_Ex::getSingletonInstance();120 $objQuery->delete('dtb_session', 'sess_id = ?', array($id));121 122 return true;123 }124 125 /**126 * ガーベジコレクションを実行する.127 *128 * 引数 $maxlifetime の代りに 定数 MAX_LIFETIME を使用する.129 *130 * @param integer $maxlifetime セッションの有効期限(使用しない)131 */132 public function sfSessGc($maxlifetime)133 {134 // MAX_LIFETIME以上更新されていないセッションを削除する。135 $objQuery =& SC_Query_Ex::getSingletonInstance();136 $limit = date("Y-m-d H:i:s",time() - MAX_LIFETIME);137 $where = "update_date < '". $limit . "' ";138 $objQuery->delete('dtb_session', $where);139 140 return true;141 }142 143 17 /** 144 18 * トランザクショントークンを生成し, 取得する. … … 226 100 * @return void 227 101 */ 228 public function adminAuthorization()102 public static function adminAuthorization() 229 103 { 230 104 if (($script_path = realpath($_SERVER['SCRIPT_FILENAME'])) !== FALSE) {
Note: See TracChangeset
for help on using the changeset viewer.
