- Timestamp:
- 2012/02/17 02:42:21 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_12-dev/data/class/helper/SC_Helper_Session.php
r21515 r21527 1 1 <?php 2 /*3 * Copyright(c) 2000-2011 LOCKON CO.,LTD. All Rights Reserved.4 *5 * http://www.lockon.co.jp/6 */7 8 /**9 * セッション関連のヘルパークラス.10 *11 * @package Helper12 * @author LOCKON CO.,LTD.13 * @version $Id$14 */2 /* 3 * Copyright(c) 2000-2011 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$ 14 */ 15 15 class SC_Helper_Session { 16 16 17 17 var $objDb; 18 18 19 // }}}20 // {{{ constructor21 22 /**23 * デフォルトコンストラクタ.24 *25 * 各関数をセッションハンドラに保存する26 */27 function SC_Helper_Session() {28 $this->objDb = new SC_Helper_DB_Ex();29 session_set_save_handler(array(&$this, 'sfSessOpen'),30 array(&$this, 'sfSessClose'),31 array(&$this, 'sfSessRead'),32 array(&$this, 'sfSessWrite'),33 array(&$this, 'sfSessDestroy'),34 array(&$this, 'sfSessGc'));35 }36 37 // }}}38 // {{{ functions39 40 /**41 * セッションを開始する.42 *43 * @param string $save_path セッションを保存するパス(使用しない)44 * @param string $session_name セッション名(使用しない)45 * @return bool セッションが正常に開始された場合 true46 */47 function sfSessOpen($save_path, $session_name) {48 return true;49 }50 51 /**52 * セッションを閉じる.53 *54 * @return bool セッションが正常に終了した場合 true55 */56 function sfSessClose() {57 return true;58 }59 60 /**61 * セッションのデータをDBから読み込む.62 *63 * @param string $id セッションID64 * @return string セッションデータの値65 */66 function sfSessRead($id) {67 $objQuery = new SC_Query_Ex();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 セッションID80 * @param string $sess_data セッションデータの値81 * @return bool セッションの書き込みに成功した場合 true82 */83 function sfSessWrite($id, $sess_data) {84 $objQuery = new SC_Query_Ex();85 $exists = $objQuery->exists('dtb_session', 'sess_id = ?', array($id));86 $sqlval = array();87 if ($exists) {88 // レコード更新89 $sqlval['sess_data'] = $sess_data;90 $sqlval['update_date'] = 'CURRENT_TIMESTAMP';91 $objQuery->update('dtb_session', $sqlval, 'sess_id = ?', array($id));92 } else {93 // セッションデータがある場合は、レコード作成94 if (strlen($sess_data) > 0) {95 $sqlval['sess_id'] = $id;96 $sqlval['sess_data'] = $sess_data;97 $sqlval['update_date'] = 'CURRENT_TIMESTAMP';98 $sqlval['create_date'] = 'CURRENT_TIMESTAMP';99 $objQuery->insert('dtb_session', $sqlval);100 }101 }102 return true;103 }104 105 // セッション破棄106 107 /**108 * セッションを破棄する.109 *110 * @param string $id セッションID111 * @return bool セッションを正常に破棄した場合 true112 */113 function sfSessDestroy($id) {114 $objQuery = new SC_Query_Ex();115 $objQuery->delete('dtb_session', 'sess_id = ?', array($id));116 return true;117 }118 119 /**120 * ガーベジコレクションを実行する.121 *122 * 引数 $maxlifetime の代りに 定数 MAX_LIFETIME を使用する.123 *124 * @param integer $maxlifetime セッションの有効期限(使用しない)125 */126 function sfSessGc($maxlifetime) {127 // MAX_LIFETIME以上更新されていないセッションを削除する。128 $objQuery = new SC_Query_Ex();129 $where = "update_date < current_timestamp + '-". MAX_LIFETIME . " secs'";130 $objQuery->delete('dtb_session', $where);131 return true;19 // }}} 20 // {{{ constructor 21 22 /** 23 * デフォルトコンストラクタ. 24 * 25 * 各関数をセッションハンドラに保存する 26 */ 27 function SC_Helper_Session() { 28 $this->objDb = new SC_Helper_DB_Ex(); 29 session_set_save_handler(array(&$this, 'sfSessOpen'), 30 array(&$this, 'sfSessClose'), 31 array(&$this, 'sfSessRead'), 32 array(&$this, 'sfSessWrite'), 33 array(&$this, 'sfSessDestroy'), 34 array(&$this, 'sfSessGc')); 35 } 36 37 // }}} 38 // {{{ functions 39 40 /** 41 * セッションを開始する. 42 * 43 * @param string $save_path セッションを保存するパス(使用しない) 44 * @param string $session_name セッション名(使用しない) 45 * @return bool セッションが正常に開始された場合 true 46 */ 47 function sfSessOpen($save_path, $session_name) { 48 return true; 49 } 50 51 /** 52 * セッションを閉じる. 53 * 54 * @return bool セッションが正常に終了した場合 true 55 */ 56 function sfSessClose() { 57 return true; 58 } 59 60 /** 61 * セッションのデータをDBから読み込む. 62 * 63 * @param string $id セッションID 64 * @return string セッションデータの値 65 */ 66 function sfSessRead($id) { 67 $objQuery = new SC_Query_Ex(); 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 $objQuery = new SC_Query_Ex(); 85 $exists = $objQuery->exists('dtb_session', 'sess_id = ?', array($id)); 86 $sqlval = array(); 87 if ($exists) { 88 // レコード更新 89 $sqlval['sess_data'] = $sess_data; 90 $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; 91 $objQuery->update('dtb_session', $sqlval, 'sess_id = ?', array($id)); 92 } else { 93 // セッションデータがある場合は、レコード作成 94 if (strlen($sess_data) > 0) { 95 $sqlval['sess_id'] = $id; 96 $sqlval['sess_data'] = $sess_data; 97 $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; 98 $sqlval['create_date'] = 'CURRENT_TIMESTAMP'; 99 $objQuery->insert('dtb_session', $sqlval); 100 } 101 } 102 return true; 103 } 104 105 // セッション破棄 106 107 /** 108 * セッションを破棄する. 109 * 110 * @param string $id セッションID 111 * @return bool セッションを正常に破棄した場合 true 112 */ 113 function sfSessDestroy($id) { 114 $objQuery = new SC_Query_Ex(); 115 $objQuery->delete('dtb_session', 'sess_id = ?', array($id)); 116 return true; 117 } 118 119 /** 120 * ガーベジコレクションを実行する. 121 * 122 * 引数 $maxlifetime の代りに 定数 MAX_LIFETIME を使用する. 123 * 124 * @param integer $maxlifetime セッションの有効期限(使用しない) 125 */ 126 function sfSessGc($maxlifetime) { 127 // MAX_LIFETIME以上更新されていないセッションを削除する。 128 $objQuery = new SC_Query_Ex(); 129 $where = "update_date < current_timestamp + '-". MAX_LIFETIME . " secs'"; 130 $objQuery->delete('dtb_session', $where); 131 return true; 132 132 } 133 133 … … 214 214 $masterData = new SC_DB_MasterData_Ex(); 215 215 $arrExcludes = $masterData->getMasterData('mtb_auth_excludes'); 216 if (preg_match('|^' . ROOT_URLPATH . ADMIN_DIR . '|', 217 $_SERVER['PHP_SELF'])) { 216 if (preg_match('|^' . ROOT_URLPATH . ADMIN_DIR . '|', $_SERVER['PHP_SELF'])) { 218 217 $is_auth = true; 219 218 220 219 foreach ($arrExcludes as $exclude) { 221 if (preg_match('|^' . ROOT_URLPATH . ADMIN_DIR . $exclude . '|', 222 $_SERVER['PHP_SELF'])) { 220 if (preg_match('|^' . ROOT_URLPATH . ADMIN_DIR . $exclude . '|', $_SERVER['PHP_SELF'])) { 223 221 $is_auth = false; 224 222 break;
Note: See TracChangeset
for help on using the changeset viewer.
