Changeset 23655
- Timestamp:
- 2014/10/14 12:07:56 (10 years ago)
- Location:
- branches/version-2_13_3/data
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_13_3/data/class/SC_Customer.php
r23606 r23655 341 341 } else { 342 342 // Session Fixation対策 343 SC_ Helper_Session_Ex::regenerateSID();343 SC_Session_Ex::regenerateSID(); 344 344 345 345 $this->updateMobilePhoneId(); … … 356 356 } else { 357 357 // Session Fixation対策 358 SC_ Helper_Session_Ex::regenerateSID();358 SC_Session_Ex::regenerateSID(); 359 359 360 360 return true; -
branches/version-2_13_3/data/class/SC_Session.php
r23605 r23655 142 142 GC_Utils_Ex::gfPrintLog('logout : user='.$this->login_id.' auth='.$this->authority.' sid='.$this->sid); 143 143 } 144 145 /** 146 * セッションIDを新しいIDに書き換える 147 * 148 * @return bool 149 */ 150 public function regenerateSID() 151 { 152 return session_regenerate_id(true); 153 } 144 154 } -
branches/version-2_13_3/data/class/SC_SessionFactory.php
r23605 r23655 86 86 public function initSession() 87 87 { 88 session_set_save_handler(array(&$this, 'sfSessOpen'),89 array(&$this, 'sfSessClose'),90 array(&$this, 'sfSessRead'),91 array(&$this, 'sfSessWrite'),92 array(&$this, 'sfSessDestroy'),93 array(&$this, 'sfSessGc'));94 95 // 通常よりも早い段階(オブジェクトが破棄される前)でセッションデータを書き込んでセッションを終了する96 // XXX APC による MDB2 の破棄タイミングによる不具合を回避する目的97 register_shutdown_function('session_write_close');98 88 } 99 89 … … 106 96 { 107 97 } 108 109 /**110 * セッションを開始する.111 *112 * @param string $save_path セッションを保存するパス(使用しない)113 * @param string $session_name セッション名(使用しない)114 * @return bool セッションが正常に開始された場合 true115 */116 public function sfSessOpen($save_path, $session_name)117 {118 return true;119 }120 121 /**122 * セッションを閉じる.123 *124 * @return bool セッションが正常に終了した場合 true125 */126 public function sfSessClose()127 {128 return true;129 }130 131 /**132 * セッションのデータをDBから読み込む.133 *134 * @param string $id セッションID135 * @return string セッションデータの値136 */137 public function sfSessRead($id)138 {139 $objQuery =& SC_Query_Ex::getSingletonInstance();140 $arrRet = $objQuery->select('sess_data', 'dtb_session', 'sess_id = ?', array($id));141 if (empty($arrRet)) {142 return '';143 } else {144 return $arrRet[0]['sess_data'];145 }146 }147 148 /**149 * セッションのデータをDBに書き込む.150 *151 * @param string $id セッションID152 * @param string $sess_data セッションデータの値153 * @return bool セッションの書き込みに成功した場合 true154 */155 public function sfSessWrite($id, $sess_data)156 {157 $objQuery =& SC_Query_Ex::getSingletonInstance();158 $exists = $objQuery->exists('dtb_session', 'sess_id = ?', array($id));159 $sqlval = array();160 if ($exists) {161 // レコード更新162 $sqlval['sess_data'] = $sess_data;163 $sqlval['update_date'] = 'CURRENT_TIMESTAMP';164 $objQuery->update('dtb_session', $sqlval, 'sess_id = ?', array($id));165 } else {166 // セッションデータがある場合は、レコード作成167 if (strlen($sess_data) > 0) {168 $sqlval['sess_id'] = $id;169 $sqlval['sess_data'] = $sess_data;170 $sqlval['update_date'] = 'CURRENT_TIMESTAMP';171 $sqlval['create_date'] = 'CURRENT_TIMESTAMP';172 $objQuery->insert('dtb_session', $sqlval);173 }174 }175 176 return true;177 }178 179 // セッション破棄180 181 /**182 * セッションを破棄する.183 *184 * @param string $id セッションID185 * @return bool セッションを正常に破棄した場合 true186 */187 public function sfSessDestroy($id)188 {189 $objQuery =& SC_Query_Ex::getSingletonInstance();190 $objQuery->delete('dtb_session', 'sess_id = ?', array($id));191 192 return true;193 }194 195 /**196 * ガーベジコレクションを実行する.197 *198 * 引数 $maxlifetime の代りに 定数 MAX_LIFETIME を使用する.199 *200 * @param integer $maxlifetime セッションの有効期限(使用しない)201 * @return bool202 */203 public function sfSessGc($maxlifetime)204 {205 // MAX_LIFETIME以上更新されていないセッションを削除する。206 $objQuery =& SC_Query_Ex::getSingletonInstance();207 $limit = date("Y-m-d H:i:s", time() - MAX_LIFETIME);208 $where = "update_date < '". $limit . "' ";209 $objQuery->delete('dtb_session', $where);210 211 return true;212 }213 98 } 214 99 /* -
branches/version-2_13_3/data/class/helper/SC_Helper_Mobile.php
r23546 r23655 171 171 172 172 // セッションIDの存在をチェックする。 173 $ sessionFactory = SC_SessionFactory_Ex::getInstance();174 if ($ sessionFactory->sfSessRead($sessionId) === null) {173 $objSession = new SC_Helper_Session_Ex(); 174 if ($objSession->sfSessRead($sessionId) === null) { 175 175 GC_Utils_Ex::gfPrintLog("Non-existent session id : sid=$sessionId"); 176 176 -
branches/version-2_13_3/data/class/helper/SC_Helper_Session.php
r23546 r23655 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 セッションが正常に開始された場合 true 45 */ 46 public function sfSessOpen($save_path, $session_name) 47 { 48 return true; 49 } 50 51 /** 52 * セッションを閉じる. 53 * 54 * @return bool セッションが正常に終了した場合 true 55 */ 56 public function sfSessClose() 57 { 58 return true; 59 } 60 61 /** 62 * セッションのデータをDBから読み込む. 63 * 64 * @param string $id セッションID 65 * @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 セッションID 82 * @param string $sess_data セッションデータの値 83 * @return bool セッションの書き込みに成功した場合 true 84 */ 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 セッションID 115 * @return bool セッションを正常に破棄した場合 true 116 */ 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 17 143 /** 18 144 * トランザクショントークンを生成し, 取得する. … … 122 248 SC_Utils_Ex::sfIsSuccess(new SC_Session_Ex()); 123 249 } 124 125 /**126 * セッションIDを新しいIDに書き換える127 *128 * @return bool129 */130 public static function regenerateSID()131 {132 return session_regenerate_id(true);133 }134 250 } -
branches/version-2_13_3/data/class/pages/admin/LC_Page_Admin_Index.php
r23606 r23655 187 187 { 188 188 // Session Fixation対策 189 SC_ Helper_Session_Ex::regenerateSID();189 SC_Session_Ex::regenerateSID(); 190 190 191 191 $objSess = new SC_Session_Ex(); -
branches/version-2_13_3/data/class/sessionfactory/SC_SessionFactory_UseCookie.php
r23546 r23655 44 44 public function initSession() 45 45 { 46 parent::initSession();47 48 46 ini_set('session.cache_limiter', 'none'); 49 47 // (session.auto_start などで)セッションが開始されていた場合に備えて閉じる。(FIXME: 保存する必要はない。破棄で良い。) -
branches/version-2_13_3/data/class/sessionfactory/SC_SessionFactory_UseRequest.php
r23546 r23655 35 35 class SC_SessionFactory_UseRequest extends SC_SessionFactory_Ex 36 36 { 37 /** @var LC_UseRequest_State_Mobile|LC_UseRequest_State_PC */38 37 public $state = null; 39 38 … … 177 176 178 177 // セッションIDの存在をチェックする。 179 if ($this->sfSessRead($sessionId) === null) { 178 $objSession = new SC_Helper_Session_Ex(); 179 if ($objSession->sfSessRead($sessionId) === null) { 180 180 GC_Utils_Ex::gfPrintLog("Non-existent session id : sid=$sessionId"); 181 181 … … 193 193 public function initSession() 194 194 { 195 parent::initSession();196 197 195 // セッションIDの受け渡しにクッキーを使用しない。 198 196 ini_set('session.use_cookies', '0'); -
branches/version-2_13_3/data/require_base.php
r23546 r23655 38 38 SC_Utils_Ex::sfInitInstall(); 39 39 40 // セッションハンドラ開始 41 $objSession = new SC_Helper_Session_Ex(); 42 40 43 // セッション初期化・開始 41 44 $sessionFactory = SC_SessionFactory_Ex::getInstance(); … … 46 49 * 認証処理忘れ防止のため, LC_Page_Admin::init() 等ではなく, ここでチェックする. 47 50 */ 48 SC_Helper_Session_Ex::adminAuthorization();51 $objSession->adminAuthorization(); 49 52 } 50 53 }
Note: See TracChangeset
for help on using the changeset viewer.