$ _SERVER ['REMOTE_ADDR']的问题

时间:2011-01-04 14:46:34

标签: php ip

我使用$ _SERVER ['REMOTE_ADDR']并返回客户端IP地址(用户正在查看当前页面的IP地址),但是现在(和相同的代码)它返回主机IP地址(我检查了ip地址) ip位置)。问题是主机还是什么? 谢谢你。

3 个答案:

答案 0 :(得分:12)

您应首先查询HTTP_X_FORWARDED_FOR,如果未分配,请使用REMOTE_ADDR

答案 1 :(得分:4)

@James @imez

默认情况下,客户端IP位于$ _SERVER ['REMOTE_ADDR']中。当用户使用PROXY服务器(HTTP网关)进入您的站点时,它会告诉您它的代理人(HTTP_X_FORWARDED_FOR),并在$ _SERVER ['REMOTE_ADDR']中提供自己的代理IP。

匿名代理将省略HTTP_X_FORWARDED_FOR或只是骗你。

无法知道您拥有真正的客户端IP。

答案 2 :(得分:2)

我必须提到数组键区分大小写,并且应该是大写的:

var_dump($_SERVER['remote_addr']);
echo "\n";
var_dump($_SERVER['REMOTE_ADDR']);

输出:

Notice: Undefined index: remote_addr in /home/adam/public_html/2011/01/04/foo.php on line 3
NULL

string(15) "10.0.1.51"

我会var_dump($_SERVER)只评估你的世界状况,并从那里开始。