不常见的IP地址

时间:2017-03-23 17:22:21

标签: php networking ip

当我尝试解析访问者IP 时,我遇到了问题, 1/500用户有一个错误的IP,正如您在日志中看到的那样。 /> 如果我在代码中犯了错误,有人可以向我解释一下吗?

我的代码:

[2017-03-23 16:36:15] production.ERROR: IP : 192.168.5.173,sams04818.orl,sams04818.orl  
[2017-03-23 16:36:30] production.ERROR: IP : 192.168.5.173,sams04818.orl,sams04818.orl  
[2017-03-23 16:37:15] production.ERROR: IP : 192.168.4.217,wmt03459.chi,wmt03459.chi  
[2017-03-23 16:39:01] production.ERROR: IP : 77.154.224.155,77.154.224.155  
[2017-03-23 17:31:03] production.ERROR: IP : 192.168.5.80,mcd03610.phx,mcd03610.phx  
[2017-03-23 17:09:09] production.ERROR: IP : 92.90.16.110,92.90.16.110  

日志:

{"utf8"=>"✓",
 "authenticity_token"=>"xx==",
 "item_0"=>{"0"=>["address_1"], "1"=>["model 1"], "2"=>["ABC"], "3"=>["Off"], "4"=>["Status"]},
 "item_1"=>{"0"=>["address_2"], "1"=>["model 1"], "2"=>["DEF"], "3"=>["On"], "4"=>["Status"]},
 "item_2"=>{"0"=>["address_3"], "1"=>["model 1"], "2"=>["GHI"], "3"=>["On"], "4"=>["Status"]}}

1 个答案:

答案 0 :(得分:2)

如果客户端请求已通过多个代理,则X-Forwarded-For(XFF)标头将包含多个IP地址。负载均衡器也常用XFF。

但是,字符串中的第一个IP地址属于原点。你可以提取它。

if(strpos($ip,','))
    $ip = substr($ip, 0, strpos($ip,','));

参考:https://en.wikipedia.org/wiki/X-Forwarded-For#Format