当我尝试解析访问者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"]}}
答案 0 :(得分:2)
如果客户端请求已通过多个代理,则X-Forwarded-For(XFF)标头将包含多个IP地址。负载均衡器也常用XFF。
但是,字符串中的第一个IP地址属于原点。你可以提取它。
if(strpos($ip,','))
$ip = substr($ip, 0, strpos($ip,','));