Source for file LC_Page.php
Documentation is available at LC_Page.php
* This file is part of EC-CUBE
* Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved.
* http://www.lockon.co.jp/
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
require_once(DATA_PATH . 'module/Net/URL.php');
* Web Page を制御する Page クラスは必ずこのクラスを継承する.
* PHP4 ではこのような抽象クラスを作っても継承先で何でもできてしまうため、
* あまり意味がないが、アーキテクトを統一するために作っておく.
* @author LOCKON CO.,LTD.
* @version $Id:LC_Page.php 15532 2007-08-31 14:39:46Z nanasess $
/** body タグの onload 属性 */
* リダイレクト先 URL に SITE_URL 及び SSL_URL を含むかチェックし,
* LC_Page::getToken() の値を URLパラメータで自動的に付与する.
* @param string $url リダイレクト先 URL
* @param boolean $isMobile モバイル用にセッションIDを付与する場合 true
* @return void|boolean$url に SITE_URL 及び, SSL_URL を含まない場合 false,
* 正常に遷移可能な場合は, $url の ロケーションヘッダを出力する.
$netURL = new Net_URL($url);
if (!empty($_SERVER['QUERY_STRING'])) {
$netURL->addRawQueryString($_SERVER['QUERY_STRING']);
if ($isMobile || $session->useCookie() == false) {
$netURL->addQueryString(TRANSACTION_ID_NAME, $this->getToken());
header("Location: " . $netURL->getURL());
// {{{ protected functions
* トランザクショントークンを生成し, 取得する.
* 悪意のある不正な画面遷移を防止するため, 予測困難な文字列を生成して返す.
* この関数を使用するためには, 生成した文字列を次画面へ渡すパラメータとして
* <input type="hidden" name="transactionid" value="この関数の返り値" />
* 遷移先のページで, LC_Page::isValidToken() の返り値をチェックすることにより,
* @return string トランザクショントークンの文字列
if (empty($_SESSION[TRANSACTION_ID_NAME])) {
$_SESSION[TRANSACTION_ID_NAME] = $this->createToken();
return $_SESSION[TRANSACTION_ID_NAME];
* トランザクショントークンの妥当性をチェックする.
* 前画面で生成されたトランザクショントークンの妥当性をチェックする.
* この関数を使用するためには, 前画面のページクラスで LC_Page::getToken()
* @return boolean トランザクショントークンが有効な場合 true
if (isset ($_POST[TRANSACTION_ID_NAME])) {
$checkToken = $_POST[TRANSACTION_ID_NAME];
} elseif (isset ($_GET[TRANSACTION_ID_NAME])) {
$checkToken = $_GET[TRANSACTION_ID_NAME];
if ($checkToken === $_SESSION[TRANSACTION_ID_NAME]) {
unset ($_SESSION[TRANSACTION_ID_NAME]);
* 以下の順序で 引数 $path から URL を取得する.
* 1. realpath($path) で $path の 絶対パスを取得
* 2. $_SERVER['DOCUMENT_ROOT'] と一致する文字列を削除
* 3. $useSSL の値に応じて, SITE_URL 又は, SSL_URL を付与する.
* 返り値に, QUERY_STRING を含めたい場合は, key => value 形式
* @param string $path 結果を取得するためのパス
* @param array $param URL に付与するパラメータの配列
* @param mixed $useSSL 結果に SSL_URL を使用する場合 true,
* SITE_URL を使用する場合 false,
* デフォルト "escape" 現在のスキーマを使用
* @return string $path の存在する http(s):// から始まる絶対パス
function getLocation($path, $param = array(), $useSSL = "escape") {
$url = SSL_URL . $rootPath;
} elseif ($useSSL === false){
$url = SITE_URL . $rootPath;
} elseif ($useSSL == "escape") {
if (SC_Utils_Ex::sfIsHTTPS()) {
$url = SSL_URL . $rootPath;
$url = SITE_URL . $rootPath;
die("[BUG] Illegal Parametor of \$useSSL ");
$netURL = new Net_URL($url);
foreach ($param as $key => $val) {
$netURL->addQueryString($key, $val);
return $netURL->getURL();
if (substr($path, 0, 1) == "/") {
// HTML_PATH を削除した文字列を取得.
// Windowsの場合は, ディレクトリの区切り文字を\から/に変換する
$htmlPath = rtrim($htmlPath, "/");
$rootPath = ltrim($rootPath, "/");
* 引数 $queryString に, $_SERVER['QUERY_STRING'] の値を使用してはならない.
* この関数は, 内部で LC_Page::sendRedirect() を使用するため,
* $_SERVER['QUERY_STRING'] の値は自動的に付与される.
* @param array $queryString QueryString の配列
* @param bool $removeQueryString 付与されていた QueryString を削除する場合 true
function reload($queryString = array(), $removeQueryString = false) {
if ($removeQueryString) {
$netURL->querystring = array();
$_SERVER['QUERY_STRING'] = '';
if (!empty($queryString)) {
foreach ($queryString as $key => $val) {
$netURL->addQueryString($key, $val);
* session_start時のno-cacheヘッダーを抑制することで
* 「戻る」ボタン使用時の有効期限切れ表示を抑制する.
* @param mixed $val デバックする要素
SC_Utils_Ex::sfPrintR($val);
* トランザクショントークン用の予測困難な文字列を生成して返す.
* @return string トランザクショントークン用の文字列
Documentation generated on Fri, 24 Feb 2012 13:58:23 +0900 by Seasoft
|