/** * リファラチェックを行う * * @return bool */ protected function _checkReferer() { $siteDomain = BcUtil::getFullDomain(); if (empty($_SERVER['HTTP_REFERER'])) { return; } $refererDomain = BcUtil::getDomain($_SERVER['HTTP_REFERER']); if (!preg_match('/^' . preg_quote($siteDomain, '/') . '/', $refererDomain)) { throw new NotFoundException(); } }
/** * URLからサブサイトを取得する * * @param bool $direct * @return BcSite|null */ public static function findCurrent($direct = true) { $request = Router::getRequest(true); if (!$request) { $request = new CakeRequest(); } $url = $request->url; $sites = self::findAll(); if (!$sites) { return null; } $url = preg_replace('/^\\//', '', $url); $currentSite = null; foreach ($sites as $site) { if ($site->alias) { $domainKey = ''; if ($site->useSubDomain) { if ($site->domainType == 1) { $domainKey = BcUtil::getSubDomain() . '/'; } elseif ($site->domainType == 2) { $domainKey = BcUtil::getFullDomain() . '/'; } } $regex = '/^' . preg_quote($site->alias, '/') . '\\//'; if (preg_match($regex, $domainKey . $url)) { $currentSite = $site; break; } } } if (!$currentSite) { $currentSite = $sites[0]; } if (!$direct) { $subSite = self::findCurrentSub(true); if ($subSite) { $currentSite = $subSite; } } return $currentSite; }