我使用$_SERVER‘’REMOTE_ADDR‘,它返回客户端ip地址(用户查看当前页面的ip地址),但现在(和相同的代码)它返回主机ip地址(我检查了ip地址和ip位置)。问题出在主机还是什么地方?谢谢你。
发布于 2011-01-04 22:50:35
您应该首先查询HTTP_X_FORWARDED_FOR,如果没有赋值,则使用REMOTE_ADDR。
发布于 2011-01-04 23:00:08
@James @imez
默认情况下,客户端IP位于$_SERVER‘’REMOTE_ADDR‘中。当用户使用代理服务器(HTTP网关)进入您的站点时,它会告诉您它为谁代理(HTTP_X_FORWARDED_FOR),并在$_ server‘’REMOTE_ADDR‘中给出它自己的代理IP。
匿名代理将省略HTTP_X_FORWARDED_FOR,或者干脆对您撒谎。
知道你有一个真实的客户端IP是不可能的。
发布于 2011-01-04 22:54:10
我不得不提一下,数组键是区分大小写的,并且应该是大写的:
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)只是为了评估你的世界的状态,然后从那里开始。
https://stackoverflow.com/questions/4594823
复制相似问题