在我的生产网站上,当用户访问我的网站(即登录,注销)时,我会保留用户的日志和IP地址。我正在使用$_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 :(得分:0)
该IP是IANA“黑洞”地址 - 没有人使用它,并且它不被视为有效的公共IP地址。通常,它在代码中用作IP的占位符或模拟代码。
你确定你没有在覆盖这个值的地方使用过一段代码吗?检查周围是否有意外if($_SERVER['REMOTE_ADDR'] = '10.0.10.10')
(注意单个等号)。简而言之 - 这个地址不可能合法。
然而,将其用作内部IP是合法的。正如其他人所建议的那样,这可能是内部请求路由的结果。请与您的主机核实网络结构是否有任何变化。
答案 1 :(得分:-2)
如果您(或您的提供商)添加了负载均衡器,则REMOTE_ADDR将显示Balancer的IP地址。要获取用户IP,请改用REMOTE_IP