コード例 #1
0
ファイル: LC_Page_Ex.php プロジェクト: geany-y/cube2
 /**
  * Page のレスポンス送信.
  *
  * @return void
  */
 public function sendResponse()
 {
     // ループ防止に現在URLを格納
     $location = '';
     $netUrl = new Net_URL();
     $location = $netUrl->getUrl();
     // ログインされていなく、リダイレクト処理
     if (empty($this->isLogin) && !preg_match('/^.*original.*/', $location)) {
         $this->objDisplay->response->sendRedirect('original');
     }
     $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance($this->plugin_activate_flg);
     // ローカルフックポイントを実行.
     $this->doLocalHookpointAfter($objPlugin);
     // HeadNaviにpluginテンプレートを追加する.
     $objPlugin->setHeadNaviBlocs($this->arrPageLayout['HeadNavi']);
     // スーパーフックポイントを実行.
     $objPlugin->doAction('LC_Page_process', array($this));
     // ページクラス名をテンプレートに渡す
     $arrBacktrace = debug_backtrace();
     if (strlen($this->tpl_page_class_name) === 0) {
         $this->tpl_page_class_name = preg_replace('/_Ex$/', '', $arrBacktrace[1]['class']);
     }
     $this->objDisplay->prepare($this);
     $this->objDisplay->addHeader('Vary', 'User-Agent');
     $this->objDisplay->response->write();
 }
コード例 #2
0
 /**
  * アプリケーション内でリダイレクトする
  *
  * 内部で生成する URL の searchpart は、下記の順で上書きしていく。(後勝ち)
  * 1. 引数 $inheritQueryString が true の場合、$_SERVER['QUERY_STRING']
  * 2. $location に含まれる searchpart
  * 3. 引数 $arrQueryString
  * @param string $location 「url-path」「現在のURLからのパス」「URL」のいずれか。「../」の解釈は行なわない。
  * @param array $arrQueryString URL に付加する searchpart
  * @param bool $inheritQueryString 現在のリクエストの searchpart を継承するか
  * @param bool|null $useSsl true:HTTPSを強制, false:HTTPを強制, null:継承
  * @return void
  * @static
  */
 function sendRedirect($location, $arrQueryString = array(), $inheritQueryString = false, $useSsl = null)
 {
     // ローカルフックポイント処理
     $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance($this->plugin_activate_flg);
     $arrBacktrace = debug_backtrace();
     if (is_object($arrBacktrace[0]['object']) && method_exists($arrBacktrace[0]['object'], 'getMode')) {
         $parent_class_name = get_parent_class($arrBacktrace[0]['object']);
         $objPlugin->doAction($parent_class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($arrBacktrace[0]['object']));
         $class_name = get_class($arrBacktrace[0]['object']);
         if ($class_name != $parent_class_name) {
             $objPlugin->doAction($class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($this));
         }
     } elseif (is_object($arrBacktrace[0]['object'])) {
         $pattern = '/^[a-zA-Z0-9_]+$/';
         $mode = null;
         if (isset($_GET['mode']) && preg_match($pattern, $_GET['mode'])) {
             $mode = $_GET['mode'];
         } elseif (isset($_POST['mode']) && preg_match($pattern, $_POST['mode'])) {
             $mode = $_POST['mode'];
         }
         $parent_class_name = get_parent_class($arrBacktrace[0]['object']);
         $objPlugin->doAction($parent_class_name . '_action_' . $mode, array($arrBacktrace[0]['object']));
         $class_name = get_class($arrBacktrace[0]['object']);
         if ($class_name != $parent_class_name) {
             $objPlugin->doAction($class_name . '_action_' . $mode, array($this));
         }
     }
     // url-path → URL 変換
     if ($location[0] === '/') {
         $netUrl = new Net_URL($location);
         $location = $netUrl->getUrl();
     }
     // URL の場合
     if (preg_match('/^https?:/', $location)) {
         $url = $location;
         if (is_bool($useSsl)) {
             if ($useSsl) {
                 $pattern = '/^' . preg_quote(HTTP_URL, '/') . '(.*)/';
                 $replacement = HTTPS_URL . '\\1';
                 $url = preg_replace($pattern, $replacement, $url);
             } else {
                 $pattern = '/^' . preg_quote(HTTPS_URL, '/') . '(.*)/';
                 $replacement = HTTP_URL . '\\1';
                 $url = preg_replace($pattern, $replacement, $url);
             }
         }
     } else {
         if (!is_bool($useSsl)) {
             $useSsl = SC_Utils_Ex::sfIsHTTPS();
         }
         $netUrl = new Net_URL($useSsl ? HTTPS_URL : HTTP_URL);
         $netUrl->path = dirname($_SERVER['SCRIPT_NAME']) . '/' . $location;
         $url = $netUrl->getUrl();
     }
     $pattern = '/^(' . preg_quote(HTTP_URL, '/') . '|' . preg_quote(HTTPS_URL, '/') . ')/';
     // アプリケーション外へのリダイレクトは扱わない
     if (preg_match($pattern, $url) === 0) {
         trigger_error('', E_USER_ERROR);
     }
     $netUrl = new Net_URL($url);
     if ($inheritQueryString && !empty($_SERVER['QUERY_STRING'])) {
         $arrQueryStringBackup = $netUrl->querystring;
         // XXX メソッド名は add で始まるが、実際には置換を行う
         $netUrl->addRawQueryString($_SERVER['QUERY_STRING']);
         $netUrl->querystring = array_merge($netUrl->querystring, $arrQueryStringBackup);
     }
     $netUrl->querystring = array_merge($netUrl->querystring, $arrQueryString);
     $session = SC_SessionFactory_Ex::getInstance();
     if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE || $session->useCookie() == false) {
         $netUrl->addQueryString(session_name(), session_id());
     }
     $netUrl->addQueryString(TRANSACTION_ID_NAME, SC_Helper_Session_Ex::getToken());
     $url = $netUrl->getURL();
     header("Location: {$url}");
     exit;
 }
コード例 #3
0
ファイル: LC_Page_Rss.php プロジェクト: nanasess/ec-azure
 /**
  * 新着情報を取得する
  *
  * @param SC_Query $objQuery DB操作クラス
  * @return array $arrNews 取得結果を配列で返す
  */
 function lfGetNews(&$objQuery)
 {
     $col = "";
     $col .= "news_id ";
     // 新着情報ID
     $col .= ",news_title ";
     // 新着情報タイトル
     $col .= ",news_comment ";
     // 新着情報本文
     $col .= ",news_date ";
     // 日付
     $col .= ",news_url ";
     // 新着情報URL
     $col .= ",news_select ";
     // 新着情報の区分(1:URL、2:本文)
     $col .= ",(SELECT shop_name FROM dtb_baseinfo limit 1) AS shop_name  ";
     // 店名
     $col .= ",(SELECT email04 FROM dtb_baseinfo limit 1) AS email ";
     // 代表Emailアドレス
     $from = "dtb_news";
     $where = "del_flg = '0'";
     $order = "rank DESC";
     $objQuery->setOrder($order);
     $arrNews = $objQuery->select($col, $from, $where);
     // RSS用に変換
     foreach (array_keys($arrNews) as $key) {
         $netUrlHttpUrl = new Net_URL(HTTP_URL);
         $row =& $arrNews[$key];
         // 日付
         $row['news_date'] = date('r', strtotime($row['news_date']));
         // 新着情報URL
         if (SC_Utils_Ex::isBlank($row['news_url'])) {
             $row['news_url'] = HTTP_URL;
         } elseif ($row['news_url'][0] == '/') {
             // 変換(絶対パス→URL)
             $netUrl = new Net_URL($row['news_url']);
             $netUrl->protocol = $netUrlHttpUrl->protocol;
             $netUrl->user = $netUrlHttpUrl->user;
             $netUrl->pass = $netUrlHttpUrl->pass;
             $netUrl->host = $netUrlHttpUrl->host;
             $netUrl->port = $netUrlHttpUrl->port;
             $row['news_url'] = $netUrl->getUrl();
         }
     }
     return $arrNews;
 }
コード例 #4
0
ファイル: Request.php プロジェクト: rkern21/videoeditor
 /**
  * Returns the current request URL  
  *
  * @return   string  Current request URL
  * @access   public
  */
  function getUrl()
  {
      return empty($this->_url)? '': $this->_url->getUrl();
  }
コード例 #5
0
ファイル: SC_Response.php プロジェクト: nanasess/ec-azure
 /**
  * アプリケーション内でリダイレクトする
  *
  * 内部で生成する URL の searchpart は、下記の順で上書きしていく。(後勝ち)
  * 1. 引数 $inheritQueryString が true の場合、$_SERVER['QUERY_STRING']
  * 2. $location に含まれる searchpart
  * 3. 引数 $arrQueryString
  * @param string $location 「url-path」「現在のURLからのパス」「URL」のいずれか。「../」の解釈は行なわない。
  * @param array $arrQueryString URL に付加する searchpart
  * @param bool $inheritQueryString 現在のリクエストの searchpart を継承するか
  * @param bool|null $useSsl true:HTTPSを強制, false:HTTPを強制, null:継承
  * @return void
  * @static
  */
 function sendRedirect($location, $arrQueryString = array(), $inheritQueryString = false, $useSsl = null)
 {
     // url-path → URL 変換
     if ($location[0] === '/') {
         $netUrl = new Net_URL($location);
         $location = $netUrl->getUrl();
     }
     // URL の場合
     if (preg_match('/^https?:/', $location)) {
         $url = $location;
         if (is_bool($useSsl)) {
             if ($useSsl) {
                 $pattern = '/^' . preg_quote(HTTP_URL, '/') . '(.*)/';
                 $replacement = HTTPS_URL . '\\1';
                 $url = preg_replace($pattern, $replacement, $url);
             } else {
                 $pattern = '/^' . preg_quote(HTTPS_URL, '/') . '(.*)/';
                 $replacement = HTTP_URL . '\\1';
                 $url = preg_replace($pattern, $replacement, $url);
             }
         }
     } else {
         if (!is_bool($useSsl)) {
             $useSsl = SC_Utils_Ex::sfIsHTTPS();
         }
         $netUrl = new Net_URL($useSsl ? HTTPS_URL : HTTP_URL);
         $netUrl->path = dirname($_SERVER['PHP_SELF']) . '/' . $location;
         $url = $netUrl->getUrl();
     }
     $pattern = '/^(' . preg_quote(HTTP_URL, '/') . '|' . preg_quote(HTTPS_URL, '/') . ')/';
     // アプリケーション外へのリダイレクトは扱わない
     if (preg_match($pattern, $url) === 0) {
         SC_Utils_Ex::sfDispException();
     }
     $netUrl = new Net_URL($url);
     if ($inheritQueryString && !empty($_SERVER['QUERY_STRING'])) {
         $arrQueryStringBackup = $netUrl->querystring;
         // XXX メソッド名は add で始まるが、実際には置換を行う
         $netUrl->addRawQueryString($_SERVER['QUERY_STRING']);
         $netUrl->querystring = array_merge($netUrl->querystring, $arrQueryStringBackup);
     }
     $netUrl->querystring = array_merge($netUrl->querystring, $arrQueryString);
     $session = SC_SessionFactory::getInstance();
     if (SC_MobileUserAgent_Ex::isMobile() || $session->useCookie() == false) {
         $netUrl->addQueryString(session_name(), session_id());
     }
     $netUrl->addQueryString(TRANSACTION_ID_NAME, SC_Helper_Session_Ex::getToken());
     $url = $netUrl->getURL();
     header("Location: {$url}");
     exit;
 }
コード例 #6
0
 /**
  * 新着情報を取得する
  *
  * @return array $arrNews 取得結果を配列で返す
  */
 public function lfGetNews()
 {
     $objNews = new SC_Helper_News_Ex();
     $arrNews = $objNews->getList();
     $objDb = new SC_Helper_DB_Ex();
     $arrInfo = $objDb->sfGetBasisData();
     // RSS用に変換
     foreach (array_keys($arrNews) as $key) {
         $netUrlHttpUrl = new Net_URL(HTTP_URL);
         $row =& $arrNews[$key];
         $row['shop_name'] = $arrInfo['shop_name'];
         $row['email'] = $arrInfo['email04'];
         // 日付
         $row['news_date'] = date('r', strtotime($row['news_date']));
         // 新着情報URL
         if (SC_Utils_Ex::isBlank($row['news_url'])) {
             $row['news_url'] = HTTP_URL;
         } elseif ($row['news_url'][0] == '/') {
             // 変換(絶対パス→URL)
             $netUrl = new Net_URL($row['news_url']);
             $netUrl->protocol = $netUrlHttpUrl->protocol;
             $netUrl->user = $netUrlHttpUrl->user;
             $netUrl->pass = $netUrlHttpUrl->pass;
             $netUrl->host = $netUrlHttpUrl->host;
             $netUrl->port = $netUrlHttpUrl->port;
             $row['news_url'] = $netUrl->getUrl();
         }
     }
     return $arrNews;
 }
コード例 #7
0
ファイル: url.php プロジェクト: komagata/plnet
Server.....: <?php 
echo $url->host;
?>

Port.......: <?php 
echo $url->port;
?>

File/path..: <?php 
echo $url->path;
?>

Querystring: <?php 
print_r($url->querystring);
?>

Anchor.....: <?php 
echo $url->anchor;
?>


Full URL...: <?php 
echo $url->getUrl();
?>
</pre>

</body>
</html>

コード例 #8
0
ファイル: SC_Initial.php プロジェクト: rateon/twhk-ec
 /**
  * ホスト名を正規化する
  *
  * @return void
  */
 public function normalizeHostname()
 {
     if (!USE_NORMALIZE_HOSTNAME || !isset($_SERVER['REQUEST_URI']) || $_SERVER['REQUEST_METHOD'] === 'POST') {
         // 処理せず戻る
         return;
     }
     $netUrlRequest = new Net_URL($_SERVER['REQUEST_URI']);
     // 要求を受けたホスト名
     $request_hostname = $netUrlRequest->host;
     $netUrlCorrect = new Net_URL(SC_Utils_Ex::sfIsHTTPS() ? HTTPS_URL : HTTP_URL);
     // 設定上のホスト名
     $correct_hostname = $netUrlCorrect->host;
     // ホスト名が不一致の場合
     if ($request_hostname !== $correct_hostname) {
         // ホスト名を書き換え
         $netUrlRequest->host = $correct_hostname;
         // 正しい URL
         $correct_url = $netUrlRequest->getUrl();
         // 警告
         $msg = 'ホスト名不一致を検出。リダイレクト実行。';
         $msg .= '要求値=' . var_export($request_hostname, true) . ' ';
         $msg .= '設定値=' . var_export($correct_hostname, true) . ' ';
         $msg .= 'リダイレクト先=' . var_export($correct_url, true) . ' ';
         trigger_error($msg, E_USER_WARNING);
         // リダイレクト(恒久的)
         SC_Response_Ex::sendHttpStatus(301);
         SC_Response_Ex::sendRedirect($correct_url);
     }
 }
コード例 #9
0
 /**
  * アプリケーション内でリダイレクトする
  *
  * 内部で生成する URL の searchpart は、下記の順で上書きしていく。(後勝ち)
  * 1. 引数 $inheritQueryString が true の場合、$_SERVER['QUERY_STRING']
  * 2. $location に含まれる searchpart
  * 3. 引数 $arrQueryString
  *
  * @param string $location
  *            「url-path」「現在のURLからのパス」「URL」のいずれか。「../」の解釈は行なわない。
  * @param array $arrQueryString
  *            URL に付加する searchpart
  * @param bool $inheritQueryString
  *            現在のリクエストの searchpart を継承するか
  * @param bool|null $useSsl
  *            true:HTTPSを強制, false:HTTPを強制, null:継承
  * @return void
  * @static
  *
  */
 public function sendRedirect($location, $arrQueryString = array(), $inheritQueryString = false, $useSsl = null)
 {
     // ローカルフックポイント処理
     $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance($this->plugin_activate_flg);
     if (is_object($objPlugin)) {
         $arrBacktrace = debug_backtrace();
         if (is_object($arrBacktrace[0]['object'])) {
             $pattern = '/^[a-zA-Z0-9_]+$/';
             if (isset($_REQUEST['mode']) && preg_match($pattern, $_REQUEST['mode'])) {
                 $mode = $_REQUEST['mode'];
             }
             $parent_class_name = get_parent_class($arrBacktrace[0]['object']);
             $class_name = get_class($arrBacktrace[0]['object']);
         }
         $objPlugin->doAction($parent_class_name . '_action_' . $mode, array($arrBacktrace[0]['object']));
         if ($class_name != $parent_class_name) {
             $objPlugin->doAction($class_name . '_action_' . $mode, array($this));
         }
     }
     // url-path → URL 変換
     if ($location[0] === '/') {
         $netUrl = new Net_URL($location);
         $url = $netUrl->getUrl();
     } elseif (strpos($location, HTTPS_URL) === 0 || strpos($location, HTTP_URL) === 0) {
         $url = $location;
     } else {
         $netUrl = new Net_URL(HTTP_URL);
         $netUrl->path = dirname($_SERVER['SCRIPT_NAME']) . '/' . $location;
         $url = $netUrl->getUrl();
     }
     if (!is_bool($useSsl)) {
         $useSsl = SC_Utils_Ex::sfIsHTTPS();
     }
     if ($useSsl) {
         $url = str_replace(HTTP_URL, HTTPS_URL, $url);
     } else {
         $url = str_replace(HTTPS_URL, HTTP_URL, $url);
     }
     // アプリケーション外へのリダイレクトは扱わない
     if (!SC_Utils_Ex::isAppInnerUrl($url)) {
         trigger_error('URL IS APP NOT INNER URL', E_USER_ERROR);
     }
     $netUrl = new Net_URL($url);
     if ($inheritQueryString && !empty($_SERVER['QUERY_STRING'])) {
         $arrQueryStringBackup = $netUrl->querystring;
         // XXX メソッド名は add で始まるが、実際には置換を行う
         $netUrl->addRawQueryString($_SERVER['QUERY_STRING']);
         $netUrl->querystring = array_merge($netUrl->querystring, $arrQueryStringBackup);
     }
     $netUrl->querystring = array_merge($netUrl->querystring, $arrQueryString);
     $session = SC_SessionFactory_Ex::getInstance();
     if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE || $session->useCookie() == false) {
         $netUrl->addQueryString(session_name(), session_id());
     }
     if (GC_Utils_Ex::isAdminFunction()) {
         // 管理画面またはmode指定時は付与
         $netUrl->addQueryString(TRANSACTION_ID_NAME, SC_Helper_Session_Ex::getToken());
     }
     $url = $netUrl->getURL();
     header("Location: {$url}");
     exit;
 }
コード例 #10
0
ファイル: Index.php プロジェクト: ChigusaYasoda/ec-cube
 /**
  * 新着情報を取得する
  *
  * @return array $arrNews 取得結果を配列で返す
  */
 public function lfGetNews()
 {
     /* @var $objNews NewsHelper */
     $objNews = Application::alias('eccube.helper.news');
     $arrNews = $objNews->getList();
     /* @var $objDb DbHelper */
     $objDb = Application::alias('eccube.helper.db');
     $arrInfo = $objDb->getBasisData();
     // RSS用に変換
     foreach (array_keys($arrNews) as $key) {
         $netUrlHttpUrl = new \Net_URL(HTTP_URL);
         $row =& $arrNews[$key];
         $row['shop_name'] = $arrInfo['shop_name'];
         $row['email'] = $arrInfo['email04'];
         // 日付
         $row['news_date'] = date('r', strtotime($row['news_date']));
         // 新着情報URL
         if (Utils::isBlank($row['news_url'])) {
             $row['news_url'] = HTTP_URL;
         } elseif ($row['news_url'][0] == '/') {
             // 変換(絶対パス→URL)
             $netUrl = new \Net_URL($row['news_url']);
             $netUrl->protocol = $netUrlHttpUrl->protocol;
             $netUrl->user = $netUrlHttpUrl->user;
             $netUrl->pass = $netUrlHttpUrl->pass;
             $netUrl->host = $netUrlHttpUrl->host;
             $netUrl->port = $netUrlHttpUrl->port;
             $row['news_url'] = $netUrl->getUrl();
         }
     }
     return $arrNews;
 }