function setReturnTo($key, $mode) { if (SC_Utils_Ex::isAppInnerUrl($_SERVER["HTTP_REFERER"])) { $netUrl = new Net_URL($_SERVER["HTTP_REFERER"]); $dir = basename(dirname($netUrl->path)); $file = basename($netUrl->path); if (preg_match("{.*(confirm|complete).php}", $file)) { GC_Utils_Ex::gfPrintLog($file); return; } switch ($dir) { case "au": case "docomo": case "softbank": break; default: $_SESSION[$key] = $netUrl->getURL(); break; } } }
/** * 新着情報を取得する. * * @return array $arrNewsList 新着情報の配列を返す */ function lfGetNews(&$objQuery) { if (DB_TYPE != 'sqlsrv') { return parent::lfGetNews($objQuery); } else { $objQuery->setOrder('rank DESC '); $arrNewsList = $objQuery->select("* ,convert(varchar(4), YEAR(news_date)) + '-' + convert(varchar(2), MONTH(news_date)) + '-' + convert(varchar(10), DAY(news_date)) as news_date_disp", 'dtb_news', 'del_flg = 0'); // モバイルサイトのセッション保持 (#797) if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) { foreach (array_keys($arrNewsList) as $key) { $arrRow =& $arrNewsList[$key]; if (SC_Utils_Ex::isAppInnerUrl($arrRow['news_url'])) { $netUrl = new Net_URL($arrRow['news_url']); $netUrl->addQueryString(session_name(), session_id()); $arrRow['news_url'] = $netUrl->getURL(); } } } return $arrNewsList; } }
/** * 新着情報を取得する. * * @return array $arrNewsList 新着情報の配列を返す */ public function lfGetNews($dispNumber, $pageNo, SC_Helper_News_Ex $objNews) { $arrNewsList = $objNews->getList($dispNumber, $pageNo); // モバイルサイトのセッション保持 (#797) if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) { foreach ($arrNewsList as $key => $value) { $arrRow =& $arrNewsList[$key]; if (SC_Utils_Ex::isAppInnerUrl($arrRow['news_url'])) { $netUrl = new Net_URL($arrRow['news_url']); $netUrl->addQueryString(session_name(), session_id()); $arrRow['news_url'] = $netUrl->getURL(); } } } return $arrNewsList; }
/** * 新着情報を取得する. * * @return array $arrNewsList 新着情報の配列を返す */ function lfGetNews(&$objQuery) { $objQuery->setOrder('rank DESC '); $arrNewsList = $objQuery->select('* , cast(news_date as date) as news_date_disp', 'dtb_news', 'del_flg = 0'); // モバイルサイトのセッション保持 (#797) if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) { foreach ($arrNewsList as $key => $value) { $arrRow =& $arrNewsList[$key]; if (SC_Utils_Ex::isAppInnerUrl($arrRow['news_url'])) { $netUrl = new Net_URL($arrRow['news_url']); $netUrl->addQueryString(session_name(), session_id()); $arrRow['news_url'] = $netUrl->getURL(); } } } return $arrNewsList; }
/** * アプリケーション内でリダイレクトする * * 内部で生成する 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; }