/** * 根据后台设定和通用规则,对指定的当前页面进行30X 跳转. 来源:需求#6894 * @param boolean $forceExit 是否强制终止程序 */ public function fix($forceExit = false) { $redirected = false; $m = new \Model\Redirect30X(); $rules = $m->getRules(); $requestUrl = \Helper\RequestUtil::getUrl(); $key = md5($requestUrl . SELLER_LANG); //指定的规则优先与通用规则 if (isset($rules[$key]['target_url'])) { //根据后台指定的规则进行修正 $this->redirect($rules[$key]['target_url']); $redirected = true; $m->increaseClicks($rules[$key]['id']); } else { //通用规则跳转 $params = Rq::getParams(); if (isset($params->module) && $params->module == 'thing') { if (isset($params->action) && $params->action == 'glist' && isset($params->class) && empty($params->aparams)) { $catId = $params->class; $model = new \Model\Navigator(); $catInfo = $model->getNav($catId, '0:0:0'); if (isset($catInfo['code']) && $catInfo['code'] == 0) { $seoUrl = Rp::rewrite(array('url' => '?module=thing&action=glist&class=' . $catId, 'isxs' => 'no', 'seo' => stripslashes($catInfo['selfCategory']['categoryName']))); $origUrl = Rq::getUrl(false); $origQueryStr = Rq::getRawQueryString(); if ($origUrl != $seoUrl) { if ($origQueryStr) { $seoUrl .= '?' . $origQueryStr; } $this->redirect($seoUrl); $redirected = true; } } } } } if ($redirected && $forceExit) { die; } }
/** * * 生成包含验证成功参数的URL */ public function creatUrl() { $url = \Helper\RequestUtil::getUrl(); $url .= substr($url, -1) == '&' ? 'redirect=true' : '&redirect=true'; return $url; }
/** * 设置语种相关的初始化参数,包括cookie及session */ public static function setLang() { $rewriteDir = array('en-uk' => 'en', 'ja-jp' => 'jp', 'fr-fr' => 'fr', 'es-sp' => 'es', 'de-ge' => 'de', 'it-it' => 'it', 'pt-pt' => 'pt', 'ru-ru' => 'ru', 'zh-hk' => 'hk', 'cn-cn' => 'cn', 'en' => 'en-uk', 'jp' => 'ja-jp', 'ja' => 'ja-jp', 'fr' => 'fr-fr', 'es' => 'es-sp', 'de' => 'de-ge', 'it' => 'it-it', 'ru' => 'ru-ru', 'hk' => 'zh-hk', 'cn' => 'cn-cn', 'pt' => 'pt-pt'); if (isset($_COOKIE['lang_cookie'])) { $SELLER_LANG = $_COOKIE['lang_cookie']; } else { $SELLER_LANG = ''; } $path = \Helper\RequestUtil::getUrl(); $path = explode('/', $path); if ($path[3] == 'ja') { $rewriteDir['ja-jp'] = "ja"; } if ($path[3] == 'jp' || $path[3] == 'ja' || $path[3] == "en" || $path[3] == 'fr' || $path[3] == 'es' || $path[3] == 'de' || $path[3] == 'it' || $path[3] == 'pt' || $path[3] == 'ru' || $path[3] == 'hk' || $path[3] == 'ar' || $path[3] == 'cn') { $SELLER_LANG = $rewriteDir[$path[3]]; } elseif (isset($_GET['adlang'])) { $SELLER_LANG = $_GET['adlang']; } if (empty($SELLER_LANG)) { if (!self::$langMap) { self::$langMap = \config\Language::$client_lang_to_web_lang; } $SELLER_LANG = self::$langMap[self::getClientLang()]; } //后台服务器访问需求增加 if (!empty($_GET['lang'])) { $SELLER_LANG = $_GET['lang']; } if (!defined('SELLER_LANG')) { define('SELLER_LANG', $SELLER_LANG); } if (!defined('LangDirName')) { /** * URL中的语种名称目录 * @var string */ define('LangDirName', $rewriteDir[$SELLER_LANG]); } if (!defined('CurrencyCode')) { if (!isset($_COOKIE['lang_cookie']) || $_COOKIE['lang_cookie'] != $SELLER_LANG || isset($_COOKIE['CurrencyCode']) && $_COOKIE['CurrencyCode'] == 'RMB' || !isset($_COOKIE['CurrencyCode'])) { //当语种变化时, 或者币种的cookie不存在,或者为RMB时, 则重新根据语种进行币种设置 switch (SELLER_LANG) { case 'ja-jp': $CurrencyC = 'JPY'; break; case 'ru-ru': $CurrencyC = 'RUB'; break; case 'fr-fr': case 'es-sp': case 'de-ge': case 'it-it': case 'pt-pt': $CurrencyC = 'EUR'; break; default: if (isset($_SERVER['HTTP_X_REAL_COUNTRY']) && $_SERVER['HTTP_X_REAL_COUNTRY'] == 'GB') { //当来IP自英国时,默认货币使用英镑 $CurrencyC = 'GBP'; } else { $CurrencyC = 'USD'; } break; } } else { if (isset($_COOKIE['CurrencyCode'])) { $CurrencyC = $_COOKIE['CurrencyCode']; } } //日语站只使用日元 if (SELLER_LANG == 'ja-jp') { $CurrencyC = 'JPY'; } if (!isset($CurrencyC)) { $CurrencyC = 'USD'; } if (!isset($_COOKIE['CurrencyCode']) || $_COOKIE['CurrencyCode'] != $CurrencyC) { setcookie("CurrencyCode", $CurrencyC, time() + 24 * 3600 * 365 * 10, '/'); $_COOKIE['CurrencyCode'] = $CurrencyC; } define('CurrencyCode', $CurrencyC); define('Currency', \config\Currency::$currencyTranslations[CurrencyCode]['Currency']); } if (!isset($_COOKIE['lang_cookie']) || $_COOKIE['lang_cookie'] != $SELLER_LANG) { setcookie("lang_cookie", $SELLER_LANG, time() + 24 * 3600 * 365 * 10, '/'); $_COOKIE['lang_cookie'] = $SELLER_LANG; } if ($_SERVER['REQUEST_URI'] == '/en' || $_SERVER['REQUEST_URI'] == '/en/') { header('HTTP/1.1 302 Moved Temporarily'); //发出302头部 header('Location:http://' . $_SERVER["HTTP_HOST"]); } }