2011-02-11 51 views
4

在我的生产现场,我保持了日志的用户在访问我的网站(如登录,注销)及其IP address.I'm使用$_SERVER['REMOTE_ADDR']获取IP。它存储访问者的准确IP前,但突然这个变量开始返回我所有的客户10.10.10.10

它是由01-31-2011.

发生可能是什么原因造成的?

服务器信息:LAMP 编辑: 现在我有以下功能它也返回相同10.10.10.10

function GetIP() 
{ 
     if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), 
"unknown")) 
       $ip = getenv("HTTP_CLIENT_IP"); 
     else if (getenv("HTTP_X_FORWARDED_FOR") && 
strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) 
       $ip = getenv("HTTP_X_FORWARDED_FOR"); 
     else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) 
       $ip = getenv("REMOTE_ADDR"); 
     else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && 
strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) 
       $ip = $_SERVER['REMOTE_ADDR']; 
     else 
       $ip = "unknown"; 
     return($ip); 
} 

感谢

+0

这一切都取决于你的环境。你在哪里举办?你有没有把代理放在它前面? – 2011-02-11 06:57:33

+0

你有一个新的路由器或类似的? – 2011-02-11 07:00:11

回答

0

也就是说IP是一个IANA“黑洞”地址 - 没有人使用它,它不被视为一个有效的公共IP地址。通常,它在代码中用作IP的占位符,或用于模拟代码。

你确定你没有使用的代码的地方,是覆盖该值的片段?检查一下意外的if($_SERVER['REMOTE_ADDR'] = '10.0.10.10')(注意单个等号)。总之 - 这个地址不可能是合法的。

据,但是,合法的,以作为一个内部IP使用。正如其他人所建议的,这可能是内部请求路由的结果。检查您的主机,看看网络结构是否有任何变化。

-2

如果您(或您的提供商)加入负载平衡器然后REMOTE_ADDR会显示平衡器的IP地址。为了让用户使用IP地址而不是REMOTE_IP