2016-10-11 133 views
-1
 
      // check for shared internet/ISP IP 
      if (!empty($_SERVER['HTTP_CLIENT_IP']) && validate_ip($_SERVER['HTTP_CLIENT_IP'])) { 
       return $_SERVER['HTTP_CLIENT_IP']; 
      } 

      // check for IPs passing through proxies 
      if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
       // check if multiple ips exist in var 
       if (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',') !== false) { 
        $iplist = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); 
        foreach ($iplist as $ip) { 
         if (validate_ip($ip)) 
          return $ip; 
        } 
       } else { 
        if (validate_ip($_SERVER['HTTP_X_FORWARDED_FOR'])) 
         return $_SERVER['HTTP_X_FORWARDED_FOR']; 
       } 
      } 
      if (!empty($_SERVER['HTTP_X_FORWARDED']) && validate_ip($_SERVER['HTTP_X_FORWARDED'])) 
       return $_SERVER['HTTP_X_FORWARDED']; 
      if (!empty($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']) && validate_ip($_SERVER['HTTP_X_CLUSTER_CLIENT_IP'])) 
       return $_SERVER['HTTP_X_CLUSTER_CLIENT_IP']; 
      if (!empty($_SERVER['HTTP_FORWARDED_FOR']) && validate_ip($_SERVER['HTTP_FORWARDED_FOR'])) 
       return $_SERVER['HTTP_FORWARDED_FOR']; 
      if (!empty($_SERVER['HTTP_FORWARDED']) && validate_ip($_SERVER['HTTP_FORWARDED'])) 
       return $_SERVER['HTTP_FORWARDED']; 

      // return unreliable ip since all else failed 
      return $_SERVER['REMOTE_ADDR']; 
     } 

     $url = "http://ipinfo.io/".get_ip_address()."/json"; 

     $json = file_get_contents($url); 

     $obj = json_decode($json); 

请检查该http://screencast.com/t/E9mlGvUt8J致命错误:在function.php调用未定义的函数validate_ip()

+1

函数的名称为validate_ip? – Thamilan

+0

很确定'validate_ip'不是一个标准的php函数,这意味着要么你创建了它,要么它是你没有提及的框架的一部分。 –

回答

2

你不必validate_ip()函数。 要在php中验证IP地址,您可以使用: filter_var($ip_a, FILTER_VALIDATE_IP)

相关问题