Advertisement
vanchelo

get_ip

Jan 31st, 2013
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.15 KB | None | 0 0
  1. <?php
  2. function get_ip($def=false){
  3.         global $REMOTE_ADDR;
  4.         global $HTTP_X_FORWARDED_FOR, $HTTP_X_FORWARDED, $HTTP_FORWARDED_FOR, $HTTP_FORWARDED;
  5.         global $HTTP_VIA, $HTTP_X_COMING_FROM, $HTTP_COMING_FROM;
  6.         global $HTTP_SERVER_VARS, $HTTP_ENV_VARS;
  7.         if(empty($REMOTE_ADDR)){
  8.             if(!empty($_SERVER)&&isset($_SERVER['REMOTE_ADDR'])){
  9.                 $REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];
  10.             }elseif(!empty($_ENV)&&isset($_ENV['REMOTE_ADDR'])){
  11.                 $REMOTE_ADDR = $_ENV['REMOTE_ADDR'];
  12.             }elseif(!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['REMOTE_ADDR'])){
  13.                 $REMOTE_ADDR = $HTTP_SERVER_VARS['REMOTE_ADDR'];
  14.             }elseif(!empty($HTTP_ENV_VARS)&&isset($HTTP_ENV_VARS['REMOTE_ADDR'])){
  15.                 $REMOTE_ADDR = $HTTP_ENV_VARS['REMOTE_ADDR'];
  16.             }elseif(@getenv('REMOTE_ADDR')){
  17.                 $REMOTE_ADDR = getenv('REMOTE_ADDR');
  18.             }
  19.         }
  20.         if(empty($HTTP_X_FORWARDED_FOR)){
  21.             if(!empty($_SERVER) && isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
  22.                 $HTTP_X_FORWARDED_FOR = $_SERVER['HTTP_X_FORWARDED_FOR'];
  23.             }elseif(!empty($_ENV) && isset($_ENV['HTTP_X_FORWARDED_FOR'])){
  24.                 $HTTP_X_FORWARDED_FOR = $_ENV['HTTP_X_FORWARDED_FOR'];
  25.             }elseif(!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'])){
  26.                 $HTTP_X_FORWARDED_FOR = $HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'];
  27.             }elseif(!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_X_FORWARDED_FOR'])){
  28.                 $HTTP_X_FORWARDED_FOR = $HTTP_ENV_VARS['HTTP_X_FORWARDED_FOR'];
  29.             }elseif(@getenv('HTTP_X_FORWARDED_FOR')){
  30.                 $HTTP_X_FORWARDED_FOR = getenv('HTTP_X_FORWARDED_FOR');
  31.             }
  32.         }
  33.         if(empty($HTTP_X_FORWARDED)){
  34.             if(!empty($_SERVER) && isset($_SERVER['HTTP_X_FORWARDED'])){
  35.                 $HTTP_X_FORWARDED = $_SERVER['HTTP_X_FORWARDED'];
  36.             }elseif(!empty($_ENV) && isset($_ENV['HTTP_X_FORWARDED'])){
  37.                 $HTTP_X_FORWARDED = $_ENV['HTTP_X_FORWARDED'];
  38.             }elseif(!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_X_FORWARDED'])){
  39.                 $HTTP_X_FORWARDED = $HTTP_SERVER_VARS['HTTP_X_FORWARDED'];
  40.             }elseif(!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_X_FORWARDED'])){
  41.                 $HTTP_X_FORWARDED = $HTTP_ENV_VARS['HTTP_X_FORWARDED'];
  42.             }elseif(@getenv('HTTP_X_FORWARDED')){
  43.                 $HTTP_X_FORWARDED = getenv('HTTP_X_FORWARDED');
  44.             }
  45.         }
  46.         if(empty($HTTP_FORWARDED_FOR)){
  47.             if(!empty($_SERVER) && isset($_SERVER['HTTP_FORWARDED_FOR'])){
  48.                 $HTTP_FORWARDED_FOR = $_SERVER['HTTP_FORWARDED_FOR'];
  49.             }elseif(!empty($_ENV) && isset($_ENV['HTTP_FORWARDED_FOR'])){
  50.                 $HTTP_FORWARDED_FOR = $_ENV['HTTP_FORWARDED_FOR'];
  51.             }elseif(!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_FORWARDED_FOR'])){
  52.                 $HTTP_FORWARDED_FOR = $HTTP_SERVER_VARS['HTTP_FORWARDED_FOR'];
  53.             }elseif(!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_FORWARDED_FOR'])){
  54.                 $HTTP_FORWARDED_FOR = $HTTP_ENV_VARS['HTTP_FORWARDED_FOR'];
  55.             }elseif(@getenv('HTTP_FORWARDED_FOR')){
  56.                 $HTTP_FORWARDED_FOR = getenv('HTTP_FORWARDED_FOR');
  57.             }
  58.         }
  59.         if(empty($HTTP_FORWARDED)){
  60.             if(!empty($_SERVER) && isset($_SERVER['HTTP_FORWARDED'])){
  61.                 $HTTP_FORWARDED = $_SERVER['HTTP_FORWARDED'];
  62.             }elseif(!empty($_ENV) && isset($_ENV['HTTP_FORWARDED'])){
  63.                 $HTTP_FORWARDED = $_ENV['HTTP_FORWARDED'];
  64.             }elseif(!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_FORWARDED'])){
  65.                 $HTTP_FORWARDED = $HTTP_SERVER_VARS['HTTP_FORWARDED'];
  66.             }elseif(!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_FORWARDED'])){
  67.                 $HTTP_FORWARDED = $HTTP_ENV_VARS['HTTP_FORWARDED'];
  68.             }elseif(@getenv('HTTP_FORWARDED')){
  69.                 $HTTP_FORWARDED = getenv('HTTP_FORWARDED');
  70.             }
  71.         }
  72.         if(empty($HTTP_VIA)){
  73.             if(!empty($_SERVER) && isset($_SERVER['HTTP_VIA'])){
  74.                 $HTTP_VIA = $_SERVER['HTTP_VIA'];
  75.             }elseif(!empty($_ENV) && isset($_ENV['HTTP_VIA'])){
  76.                 $HTTP_VIA = $_ENV['HTTP_VIA'];
  77.             }elseif(!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_VIA'])){
  78.                 $HTTP_VIA = $HTTP_SERVER_VARS['HTTP_VIA'];
  79.             }elseif(!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_VIA'])){
  80.                 $HTTP_VIA = $HTTP_ENV_VARS['HTTP_VIA'];
  81.             }elseif(@getenv('HTTP_VIA')){
  82.                 $HTTP_VIA = getenv('HTTP_VIA');
  83.             }
  84.         }
  85.  
  86.         if(empty($HTTP_X_COMING_FROM)){
  87.             if(!empty($_SERVER) && isset($_SERVER['HTTP_X_COMING_FROM'])){
  88.                 $HTTP_X_COMING_FROM = $_SERVER['HTTP_X_COMING_FROM'];
  89.             }elseif(!empty($_ENV) && isset($_ENV['HTTP_X_COMING_FROM'])){
  90.                 $HTTP_X_COMING_FROM = $_ENV['HTTP_X_COMING_FROM'];
  91.             }elseif(!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_X_COMING_FROM'])){
  92.                 $HTTP_X_COMING_FROM = $HTTP_SERVER_VARS['HTTP_X_COMING_FROM'];
  93.             }elseif(!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_X_COMING_FROM'])){
  94.                 $HTTP_X_COMING_FROM = $HTTP_ENV_VARS['HTTP_X_COMING_FROM'];
  95.             }elseif(@getenv('HTTP_X_COMING_FROM')){
  96.                 $HTTP_X_COMING_FROM = getenv('HTTP_X_COMING_FROM');
  97.             }
  98.         }
  99.  
  100.         if(empty($HTTP_COMING_FROM)){
  101.             if(!empty($_SERVER) && isset($_SERVER['HTTP_COMING_FROM'])){
  102.                 $HTTP_COMING_FROM = $_SERVER['HTTP_COMING_FROM'];
  103.             }elseif(!empty($_ENV) && isset($_ENV['HTTP_COMING_FROM'])){
  104.                 $HTTP_COMING_FROM = $_ENV['HTTP_COMING_FROM'];
  105.             }elseif(!empty($HTTP_COMING_FROM) && isset($HTTP_SERVER_VARS['HTTP_COMING_FROM'])){
  106.                 $HTTP_COMING_FROM = $HTTP_SERVER_VARS['HTTP_COMING_FROM'];
  107.             }elseif(!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_COMING_FROM'])){
  108.                 $HTTP_COMING_FROM = $HTTP_ENV_VARS['HTTP_COMING_FROM'];
  109.             }elseif(@getenv('HTTP_COMING_FROM')){
  110.                 $HTTP_COMING_FROM = getenv('HTTP_COMING_FROM');
  111.             }
  112.         }
  113.            
  114.         if(!empty($REMOTE_ADDR)){
  115.             $direct_ip = $REMOTE_ADDR;
  116.         }
  117.            
  118.         $proxy_ip='';
  119.         if(!empty($HTTP_X_FORWARDED_FOR))$proxy_ip = $HTTP_X_FORWARDED_FOR;
  120.         elseif(!empty($HTTP_X_FORWARDED))$proxy_ip = $HTTP_X_FORWARDED;
  121.         elseif(!empty($HTTP_FORWARDED_FOR))$proxy_ip = $HTTP_FORWARDED_FOR;
  122.         elseif(!empty($HTTP_FORWARDED))$proxy_ip = $HTTP_FORWARDED;
  123.         elseif(!empty($HTTP_VIA))$proxy_ip = $HTTP_VIA;
  124.         elseif(!empty($HTTP_X_COMING_FROM))$proxy_ip = $HTTP_X_COMING_FROM;
  125.         elseif(!empty($HTTP_COMING_FROM))$proxy_ip = $HTTP_COMING_FROM;
  126.         if(empty($proxy_ip)){
  127.             return $direct_ip;
  128.         }else{
  129.             $is_ip = preg_match('/^([0-9]{1,3}\.){3,3}[0-9]{1,3}/i', $proxy_ip, $regs);
  130.             if($is_ip && (count($regs) > 0)){
  131.                 return $regs[0];
  132.             }else{
  133.                 return $def;
  134.             }
  135.         }
  136.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement