Your IP : 18.191.66.44
<?php
namespace Bitrix\Main;
abstract class HtmlPage
extends Page
{
protected function initializeRequest()
{
$culture = $this->getContext()->getCulture();
$charset = $culture->getCharset();
if (
(!defined("STATISTIC_ONLY") || !STATISTIC_ONLY)
&& (Config\Option::get("main", "include_charset", "Y") == "Y")
&& !empty($charset)
)
{
$response = $this->getResponse();
$response->addHeader("Content-Type", "text/html; charset=".$charset);
}
parent::initializeRequest();
}
protected function getHtmlToSpreadCookiesOverSites()
{
static $firstExecution = true;
if (!$firstExecution)
throw new NotSupportedException("getHtmlToSpreadCookiesOverSites() must be called only once");
if (Config\Option::get("main", "ALLOW_SPREAD_COOKIE", "Y") !== "Y")
return "";
$result = "";
$context = $this->getContext();
/** @var $response HttpResponse */
$response = $context->getResponse();
$params = "";
foreach ($response->getCookies() as $cookie)
{
/** @var $cookie \Bitrix\Main\Web\Cookie */
if ($cookie->getSpread() & Web\Cookie::SPREAD_SITES)
$params .= $cookie->getName().chr(1).$cookie->getValue().chr(1).$cookie->getExpires().chr(1).$cookie->getPath().chr(1).''.chr(1).$cookie->getSecure().chr(2);
}
if (isset($_SESSION['SPREAD_COOKIE']) && is_array($_SESSION['SPREAD_COOKIE']) && !empty($_SESSION['SPREAD_COOKIE']))
{
reset($_SESSION['SPREAD_COOKIE']);
while (list($cookieName, $cookieData) = each($_SESSION['SPREAD_COOKIE']))
{
$cookieData["D"] = ""; // domain must be empty
$params .= $cookieName.chr(1).$cookieData["V"].chr(1).$cookieData["T"].chr(1).$cookieData["F"].chr(1).$cookieData["D"].chr(1).$cookieData["S"].chr(2);
}
unset($_SESSION['SPREAD_COOKIE']);
}
if (!empty($params))
{
$server = $context->getServer();
/** @var $request HttpRequest */
$request = $context->getRequest();
$versionFile = new IO\File(IO\Path::convertRelativeToAbsolute("/bitrix/modules/main/classes/general/version.php"));
$salt = $request->getRemoteAddress()."|".$versionFile->getModificationTime()."|".LICENSE_KEY;
$params = "s=".urlencode(base64_encode($params))."&k=".urlencode(md5($params.$salt));
$domainList = array();
$domainList[] = $server->getHttpHost();
$recordset = SiteTable::getList(
array(
'filter' => array('ACTIVE' => 'Y'),
)
);
while ($record = $recordset->Fetch())
{
$siteDomainsList = explode("\n", str_replace("\r", "\n", $record["DOMAINS"]));
if (is_array($siteDomainsList) && count($siteDomainsList) > 0)
{
foreach ($siteDomainsList as $d)
{
$d = trim($d);
if (!empty($d))
$domainList[] = $d;
}
}
}
if (count($domainList) > 0)
{
$uniqueDomainList = array();
$domainList = array_unique($domainList);
$domainList2 = array_unique($domainList);
foreach ($domainList as $domain1)
{
$goodDomain = true;
foreach ($domainList2 as $domain2)
{
if (strlen($domain1) > strlen($domain2) && substr($domain1, -(strlen($domain2) + 1)) == ".".$domain2)
{
$goodDomain = false;
break;
}
}
if ($goodDomain)
$uniqueDomainList[] = $domain1;
}
$protocol = ($request->isHttps()) ? "https://" : "http://";
$host = $server->getHttpHost();
$requestUri = $request->getRequestUri();
$currentUri = new Web\Uri($protocol.$host."/".$requestUri, Web\UriType::ABSOLUTE);
$currentUriParts = $currentUri->parse();
foreach ($uniqueDomainList as $domain)
{
$uriString = $protocol.$domain."/bitrix/spread.php?".$params;
$domainUri = new Web\Uri($uriString, Web\UriType::ABSOLUTE);
$domainUriParts = $domainUri->parse();
if ($currentUriParts["host"] != $domainUriParts["host"])
$result .= '<img src="'.Text\String::htmlspecialchars($uriString).'" alt="" style="width:0px; height:0px; position:absolute; left:-1px; top:-1px;" />'."\n";
}
}
}
$firstExecution = false;
return $result;
}
}