File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/modules/main/lib/engine/response/redirect.php
Back
<?php namespace Bitrix\Main\Engine\Response; use Bitrix\Main; use Bitrix\Main\Context; use Bitrix\Main\Text\Encoding; class Redirect extends Main\HttpResponse { /** @var string|Main\Web\Uri $url */ private $url; /** @var bool */ private $skipSecurity; public function __construct($url, bool $skipSecurity = false) { parent::__construct(); $this ->setStatus('302 Found') ->setSkipSecurity($skipSecurity) ->setUrl($url) ; } /** * @return Main\Web\Uri|string */ public function getUrl() { return $this->url; } /** * @param Main\Web\Uri|string $url * @return $this */ public function setUrl($url) { $this->url = $url; return $this; } /** * @return bool */ public function isSkippedSecurity(): bool { return $this->skipSecurity; } /** * @param bool $skipSecurity * @return $this */ public function setSkipSecurity(bool $skipSecurity) { $this->skipSecurity = $skipSecurity; return $this; } private function checkTrial(): bool { $isTrial = defined("DEMO") && DEMO === "Y" && ( !defined("SITEEXPIREDATE") || !defined("OLDSITEEXPIREDATE") || SITEEXPIREDATE == '' || SITEEXPIREDATE != OLDSITEEXPIREDATE ) ; return $isTrial; } private function isExternalUrl($url): bool { return preg_match("'^(http://|https://|ftp://)'i", $url); } private function modifyBySecurity($url) { /** @global \CMain $APPLICATION */ global $APPLICATION; $isExternal = $this->isExternalUrl($url); if(!$isExternal && strpos($url, "/") !== 0) { $url = $APPLICATION->GetCurDir() . $url; } //doubtful about & and http response splitting defence $url = str_replace(["&", "\r", "\n"], ["&", "", ""], $url); if (!defined("BX_UTF") && defined("LANG_CHARSET")) { $url = Encoding::convertEncoding($url, LANG_CHARSET, "UTF-8"); } return $url; } private function processInternalUrl($url) { /** @global \CMain $APPLICATION */ global $APPLICATION; //store cookies for next hit (see CMain::GetSpreadCookieHTML()) $APPLICATION->StoreCookies(); $server = Context::getCurrent()->getServer(); $protocol = Context::getCurrent()->getRequest()->isHttps() ? "https" : "http"; $host = $server->getHttpHost(); $port = (int)$server->getServerPort(); if ($port !== 80 && $port !== 443 && $port > 0 && strpos($host, ":") === false) { $host .= ":" . $port; } return "{$protocol}://{$host}{$url}"; } public function send() { if ($this->checkTrial()) { die(Main\Localization\Loc::getMessage('MAIN_ENGINE_REDIRECT_TRIAL_EXPIRED')); } $url = $this->getUrl(); $isExternal = $this->isExternalUrl($url); $url = $this->modifyBySecurity($url); foreach (GetModuleEvents("main", "OnBeforeLocalRedirect", true) as $event) { ExecuteModuleEventEx($event, [&$url, $this->isSkippedSecurity(), &$isExternal, $this]); } if (!$isExternal) { $url = $this->processInternalUrl($url); } $this->addHeader('Location', $url); foreach (GetModuleEvents("main", "OnLocalRedirect", true) as $event) { ExecuteModuleEventEx($event); } Main\Application::getInstance()->getKernelSession()["BX_REDIRECT_TIME"] = time(); parent::send(); } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.25 |
proxy
|
phpinfo
|
Settings