- Модуль: security
- Путь к файлу: ~/bitrix/modules/security/classes/general/redirect.php
- Класс: CSecurityRedirect
- Вызов: CSecurityRedirect::ReplaceHREF
static function ReplaceHREF($matches)
{
static $arUrls = false;
static $sid = false;
static $strDomains = false;
if(!$arUrls)
{
$arUrls = self::GetUrls();
$sid = static::GetSeed();
$arDomains = self::GetDomains();
foreach($arDomains as $i => $domain)
$arDomains[$i] = preg_quote($domain, "/");
$strDomains = "/.*(".implode("|", $arDomains).")$/";
}
foreach($arUrls as $arUrl)
{
if(preg_match("/^(http(?:s){0,1}\:\/\/(?:[a-zA-Z0-9\.-])+){0,1}".preg_quote($arUrl["URL"], "/")."?.*?".preg_quote($arUrl["PARAMETER_NAME"], "/")."=(http|https|ftp)(:|%3A|%3A)(\/\/|%2F%2F|%2F%2F)([^&]+)/im", $matches[3], $match))
{
if($match[1] == '' || preg_match($strDomains, $match[1]))
{
$goto = $match[2].$match[3].$match[4].$match[5];
$goto = str_replace(
array("%", "%3A", "%2F"),
array("%", ":", "/"),
$goto);
return $matches[1].$matches[2].$matches[3]."&af=".static::Sign($sid, urldecode($goto)).$matches[4];
}
}
}
return $matches[0];
}