Changeset 19975 for branches/version-2_5-dev/data/class/pages/LC_Page.php
- Timestamp:
- 2011/01/19 16:25:15 (13 years ago)
- bzr:base-revision:
- svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:19974
- bzr:committer:
- Kentaro Ohkouchi <ohkouchi@loop-az.jp>
- bzr:file-ids:
data/Smarty/templates/admin/order/edit.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fadmin%2Forder%2Fedit.tpl
data/class/helper/SC_Helper_Purchase.php sc_helper_purchase.p-20101020100530-jyaoa7ch9pdfjqzp-1
data/class/pages/LC_Page.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2FLC_Page.php
data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php 15594@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Forder%2FLC_Page_Admin_Order_Edit.php
data/class/pages/entry/LC_Page_Entry.php 15141@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fentry%2FLC_Page_Entry.php- bzr:mapping-version:
- v4
- bzr:merge:
ohkouchi@loop-az.jp-20110119072232-6257e60vprtdgsk1- bzr:repository-uuid:
- 1e3b908f-19a9-db11-a64c-001125224ba8
- bzr:revision-id:
- ohkouchi@loop-az.jp-20110119072512-1yzw3wuviyorpvj3
- bzr:revno:
- 2704
- bzr:revprop:branch-nick:
- branches/version-2_5-dev
- bzr:root:
- branches/version-2_5-dev
- bzr:text-revisions:
data/class/helper/SC_Helper_Purchase.php ohkouchi@loop-az.jp-20110119072232-6257e60vprtdgsk1
data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php ohkouchi@loop-az.jp-20110119072232-6257e60vprtdgsk1
data/class/pages/entry/LC_Page_Entry.php ohkouchi@loop-az.jp-20110119072232-6257e60vprtdgsk1- bzr:timestamp:
- 2011-01-19 16:25:12.394000053 +0900
- bzr:user-agent:
- bzr2.2.1+bzr-svn1.0.4
- svn:original-date:
- 2011-01-19T07:25:12.394000Z
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/pages/LC_Page.php
r19972 r19975 181 181 function setTemplate($template) { 182 182 $this->template = $template; 183 }184 185 /**186 * 指定の URL へリダイレクトする.187 *188 * リダイレクト先 URL に HTTP_URL 及び HTTPS_URL を含むかチェックし,189 * LC_Page::getToken() の値を URLパラメータで自動的に付与する.190 *191 * @param string $url リダイレクト先 URL192 * @param boolean $isMobile モバイル用にセッションIDを付与する場合 true193 * @return void|boolean $url に HTTP_URL 及び, HTTPS_URL を含まない場合 false,194 * 正常に遷移可能な場合は, $url の ロケーションヘッダを出力する.195 * @see Net_URL196 */197 function sendRedirect($url, $isMobile = false) {198 echo 'SC_Response_Ex::sendRedirect()に移行してね。';199 exit;200 201 if (preg_match("/(" . preg_quote(HTTP_URL, '/')202 . "|" . preg_quote(HTTPS_URL, '/') . ")/", $url)) {203 204 $netURL = new Net_URL($url);205 if (!empty($_SERVER['QUERY_STRING'])) {206 $netURL->addRawQueryString($_SERVER['QUERY_STRING']);207 }208 209 $session = SC_SessionFactory::getInstance();210 if ($isMobile || $session->useCookie() == false) {211 $netURL->addQueryString(session_name(), session_id());212 }213 214 $netURL->addQueryString(TRANSACTION_ID_NAME, $this->getToken());215 header("Location: " . $netURL->getURL());216 //return true;217 exit();218 }219 return false;220 }221 222 // }}}223 // {{{ protected functions224 225 /**226 * トランザクショントークンを生成し, 取得する.227 *228 * 悪意のある不正な画面遷移を防止するため, 予測困難な文字列を生成して返す.229 * 同時に, この文字列をセッションに保存する.230 *231 * この関数を使用するためには, 生成した文字列を次画面へ渡すパラメータとして232 * 出力する必要がある.233 *234 * 例)235 * <input type="hidden" name="transactionid" value="この関数の返り値" />236 *237 * 遷移先のページで, LC_Page::isValidToken() の返り値をチェックすることにより,238 * 画面遷移の妥当性が確認できる.239 *240 * @access protected241 * @return string トランザクショントークンの文字列242 */243 function getToken() {244 echo "SC_Helper_Session.php::getToken()に移行してね。";245 exit;246 if (empty($_SESSION[TRANSACTION_ID_NAME])) {247 $_SESSION[TRANSACTION_ID_NAME] = $this->createToken();248 }249 return $_SESSION[TRANSACTION_ID_NAME];250 }251 252 /**253 * トランザクショントークンの妥当性をチェックする.254 *255 * 前画面で生成されたトランザクショントークンの妥当性をチェックする.256 * この関数を使用するためには, 前画面のページクラスで LC_Page::getToken()257 * を呼んでおく必要がある.258 *259 * @access protected260 * @return boolean トランザクショントークンが有効な場合 true261 */262 function isValidToken() {263 echo "SC_Helper_Session.php::isValidToken()に移行してね。";264 exit;265 266 $checkToken = "";267 268 // $_POST の値を優先する269 if (isset($_POST[TRANSACTION_ID_NAME])) {270 271 $checkToken = $_POST[TRANSACTION_ID_NAME];272 } elseif (isset($_GET[TRANSACTION_ID_NAME])) {273 274 $checkToken = $_GET[TRANSACTION_ID_NAME];275 }276 277 $ret = false;278 // token の妥当性チェック279 if ($checkToken === $_SESSION[TRANSACTION_ID_NAME]) {280 281 $ret = true;282 }283 284 unset($_SESSION[TRANSACTION_ID_NAME]);285 return $ret;286 183 } 287 184 … … 343 240 $path = str_replace('\\', '/', $path); 344 241 $htmlPath = str_replace('\\', '/', HTML_REALDIR); 345 242 346 243 // PHP 5.1 対策 ( http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=4277&forum=9 ) 347 244 if (strlen($path) == 0) { 348 245 $path = '.'; 349 246 } 350 247 351 248 // $path が / で始まっている場合 352 249 if (substr($path, 0, 1) == '/') { … … 357 254 } 358 255 $realPath = str_replace('\\', '/', $realPath); 359 256 360 257 // $path が / で終わっている場合、realpath によって削られた末尾の / を復元する。 361 258 if (substr($path, -1, 1) == '/' && substr($realPath, -1, 1) != '/') { 362 259 $realPath .= '/'; 363 260 } 364 261 365 262 // HTML_REALDIR を削除した文字列を取得. 366 263 $rootPath = str_replace($htmlPath, '', $realPath); … … 396 293 header('Last-Modified:'); 397 294 break; 398 295 399 296 case 'private': 400 297 $cache_expire = session_cache_expire() * 60; … … 404 301 header('Last-Modified:'); 405 302 break; 406 303 407 304 default: 408 305 break; … … 422 319 SC_Utils_Ex::sfPrintR($val); 423 320 } 424 425 // }}}426 // {{{ private functions427 428 /**429 * トランザクショントークン用の予測困難な文字列を生成して返す.430 *431 * @access private432 * @return string トランザクショントークン用の文字列433 */434 function createToken() {435 echo "SC_Helper_Session::createToken()に移行してね。";436 exit;437 return sha1(uniqid(rand(), true));438 }439 321 } 440 322 ?>
Note: See TracChangeset
for help on using the changeset viewer.