2017-07-18 85 views
-1

我有一个PHP脚本,我使用了几个星期,并允许我捕捉访问我的网站的人的IP,但几天后(我的印象是,因为我激活我的主机服务器OVH上的选项“CDN + HTTP/2”),我的脚本返回了我的虚拟主机OVH的多个公共IP地址之一。IP访问者

这里的脚本:

function get_ip() { 
     if (getenv('HTTP_X_FORWARDED_FOR')) { 
      $ip = getenv('HTTP_X_FORWARDED_FOR'); 
     } 
     elseif (getenv('HTTP_CLIENT_IP')) { 
      $ip = getenv('HTTP_CLIENT_IP'); 
     } 
     elseif (getenv('HTTP_X_COMING_FROM')) { 
      $ip = getenv('HTTP_X_COMING_FROM'); 
     } 
     elseif (getenv('HTTP_VIA')) { 
      $ip = getenv('HTTP_VIA'); 
     } 
     elseif (getenv('HTTP_XROXY_CONNECTION')) { 
      $ip = getenv('HTTP_XROXY_CONNECTION'); 
     } 
     else { 
      $ip = getenv('REMOTE_ADDR'); 
     } 
     return $ip; 
    } 

    $ip = get_ip(); 

谢谢您的帮助

+0

您可以将其全部转储并查看出了什么问题。 –

+0

我把getenv('HTTP_X_FORWARDED_FOR')放在最后,它可以工作......谢谢;) – Chrys

回答

1

好,解决方案。

function get_ip() { 
    if (getenv('HTTP_CLIENT_IP')) { 
     $ip = getenv('HTTP_CLIENT_IP'); 
    } 
    elseif (getenv('HTTP_X_COMING_FROM')) { 
     $ip = getenv('HTTP_X_COMING_FROM'); 
    } 
    elseif (getenv('HTTP_VIA')) { 
     $ip = getenv('HTTP_VIA'); 
    } 
    elseif (getenv('HTTP_XROXY_CONNECTION')) { 
     $ip = getenv('HTTP_XROXY_CONNECTION'); 
    } 
    elseif (getenv('REMOTE_ADDR')) { 
     $ip = getenv('REMOTE_ADDR'); 
    } 
    else { 
     $ip = getenv('HTTP_X_FORWARDED_FOR'); 
    } 
    return $ip; 
} 

$ip = get_ip(); 
+1

是的,这是解决方案^^ – Chrys