Поиск по этому блогу

среда, 14 марта 2012 г.

Палилка реальных 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'];

автор fly_indiz

Комментариев нет:

Отправить комментарий

Количество·просмотров