public function routeShutdown(XF_Controller_Request_Abstract $request) { //如果存在强制清除缓存命令 $auth = new XF_Auth_Storage_Session(); if ($auth->isEmpty() == false && $auth->read()->role_id != '0') { if ($request->getParam('clear') == 'cache') { XF_DataPool::getInstance()->add('clearCache', TRUE); } if ($request->getParam('clear') == 'action') { XF_DataPool::getInstance()->add('clearActionCache', TRUE); } } //自动清除缓存 if ($request->getParam('autoclear') == 'true') { XF_DataPool::getInstance()->add('clearActionCache', TRUE); } //获取用户当前真实的地区id $data = array('id' => '1', 'name' => '北京', 'pinyin' => 'beijing'); $ip = new Application_Model_IP(); $ip->table()->setAssociatedAuto('city'); $row = $ip->getByIP($request->getClientIp()); if ($row != false) { $data = array('id' => $row->province_id, 'name' => $row->city_province_id->name, 'pinyin' => $row->city_province_id->pinyin); } XF_View::getInstance()->assign('trueCity', (object) $data); }
private function switchCity() { $isSpider = false; $spiders = array('sogou spider', 'Sosospider', '360Spider', 'googlebot', 'mediapartners-google', 'baiduspider', 'msnbot', 'yodaobot', 'yahoo! slurp;', 'yahoo! slurp china;', 'iaskspider', 'sogou web spider', 'sogou push spider'); foreach ($spiders as $s) { if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']), strtolower($s)) !== false) { $isSpider = true; break; } } //如果来源是本站则不自动跳转 if ((!isset($_SERVER['HTTP_REFERER']) || strpos($_SERVER['HTTP_REFERER'], XF_Config::getInstance()->getDomain()) == false) && $isSpider == false) { $domain_url = XF_Config::getInstance()->getDomain(); //是否存在cookie $cookie = new XF_Cookie('local'); if ($cookie->isEmpty() == false) { $mod = new Application_Model_City(); $row = $mod->get($cookie->read()); if ($row != false) { die('<script>window.location.href="http://' . $row->pinyin . '.' . $domain_url . '";</script>'); } } /////IP $ip = XF_Controller_Request_Http::getInstance()->getClientIp(); $mod = new Application_Model_IP(); $row = $mod->getByIP($ip); $province_id = 1; //如果用户ip不存在则添加到库中 if ($row == false) { $province_id = $mod->add($ip); } else { $province_id = $row->province_id; } XF_Config::getInstance()->load('cityDomain'); $cityDomains = (array) XF_Config::getInstance()->cityDomain; foreach ($cityDomains as $domain => $val) { if ($val['id'] == $province_id) { die('<script>window.location.href="http://' . $domain . '.' . $domain_url . '";</script>'); } } //默认为北京 die('<script>window.location.href="http://beijing.' . $domain_url . '";</script>'); } }