• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/lib/common.php
  • Класс: BitrixTimemanCommon
  • Вызов: Common::isNetworkRange
static function isNetworkRange($userIp = '')
{
	$userIp = trim($userIp);

	if ($userIp == '')
	{
		$userIp = $_SERVER['REMOTE_ADDR'];
	}

	if ($userIp == '127.0.0.1')
	{
		return [
			'IP' => $userIp,
			'RANGE' => $userIp,
			'NAME' => 'localhost',
		];
	}

	$userIpLong = ip2long($userIp);

	$networkRanges = BitrixTimemanCommon::getOptionNetworkRange();

	if (!empty($networkRanges))
	{
		foreach($networkRanges as $range)
		{
			if (mb_strpos($range['ip_range'], "-") !== false)
			{
				$ipRange = explode("-", $range['ip_range']);
				$ipMinRange = ip2long($ipRange[0]);
				$ipMaxRange = ip2long($ipRange[1]);
				if ($userIpLong <= $ipMaxRange && $userIpLong >= $ipMinRange)
				{
					return [
						'IP' => $userIp,
						'RANGE' => $range['ip_range'],
						'NAME' => $range['name'],
					];
				}
			}
			else if ($userIp == $range['ip_range'])
			{
				return [
					'IP' => $userIp,
					'RANGE' => $range['ip_range'],
					'NAME' => $range['name'],
				];
			}
		}

		return false;
	}

	return [
		'ip' => $userIp,
		'range' => $userIp,
		'name' => $userIp,
	];
}