突然$ _SERVER ['REMOTE_ADDR']开始返回10.10.10.10 php

时间:2011-02-11 06:52:14

标签: php

在我的生产网站上,当用户访问我的网站(即登录,注销)时,我会保留用户的日志和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);
}

由于

2 个答案:

答案 0 :(得分:0)

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

你确定你没有在覆盖这个值的地方使用过一段代码吗?检查周围是否有意外if($_SERVER['REMOTE_ADDR'] = '10.0.10.10')(注意单个等号)。简而言之 - 这个地址不可能合法。

然而,将其用作内部IP是合法的。正如其他人所建议的那样,这可能是内部请求路由的结果。请与您的主机核实网络结构是否有任何变化。

答案 1 :(得分:-2)

如果您(或您的提供商)添加了负载均衡器,则REMOTE_ADDR将显示Balancer的IP地址。要获取用户IP,请改用REMOTE_IP