Палилка реальных IP
// Obtain and encode user IP
if (empty($_SERVER['REMOTE_ADDR'])) $_SERVER['REMOTE_ADDR'] = '127.0.0.1';
function get_real_ip()
{
$real_ip['ip'] = false;
$real_ip['local'] = false;
$http_realip_headers = array(
'HTTP_X_FORWARDED_FOR',
'HTTP_X_FORWARDED',
'HTTP_FORWARDED_FOR',
'HTTP_FORWARDED',
'HTTP_X_COMING_FROM',
'HTTP_COMING_FROM',
'HTTP_CLIENT_IP',
'HTTP_PROXY_USER',
'HTTP_X_REAL_IP',
'REMOTE_ADDR',
);
$localnetwork_netmasks = array(
'127.0.0.0/8',
'192.168.0.0/16',
'10.0.0.0/8',
'169.254.0.0/16',
'172.16.0.0/12',
);
foreach ($http_realip_headers as $http_realip_header)
{
if (empty($_SERVER[$http_realip_header])) $_SERVER[$http_realip_header] = '';
foreach (explode(',', $_SERVER[$http_realip_header]) as $x_f )
{
$x_f = trim($x_f);
if (preg_match( '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $x_f))
{
preg_match( "/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/", $x_f, $match);
$temp_ip = '';
$temp_ip = $match[1].'.'.$match[2].'.'.$match[3].'.'.$match[4];
if ($temp_ip && $temp_ip != '...')
{
$continueflag = false;
foreach ($localnetwork_netmasks as $localnetwork_netmask)
{
if (net_match($temp_ip, $localnetwork_netmask))
{
$continueflag = true;
$real_ip['local'] = true;
break;
}
}
if ($continueflag) continue;
else
{
$real_ip['ip'] = $temp_ip;
return $real_ip;
}
}
}
break;
}
}
return $real_ip;
}
$real_ip = get_real_ip();
if (empty($_SERVER['HTTP_VIA'])) $_SERVER['HTTP_VIA'] = '';
// if ($_SERVER['HTTP_VIA'] && $real_ip['ip'] == $_SERVER['REMOTE_ADDR'] && !$real_ip['local'] && $bb_cfg['strict_anonymous_proxy_access']) die('Intrusion detected');
$client_ip = $real_ip['ip'] ? $real_ip['ip'] : $_SERVER['REMOTE_ADDR'];
Комментарии:
Нету комментариев для вывода...