我使用$ _SERVER ['REMOTE_ADDR']并返回客户端IP地址(用户正在查看当前页面的IP地址),但是现在(和相同的代码)它返回主机IP地址(我检查了ip地址) ip位置)。问题是主机还是什么? 谢谢你。
答案 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)
只评估你的世界状况,并从那里开始。