【发布时间】:2018-08-29 06:40:28
【问题描述】:
编辑:
我已经清理了浏览器的缓存,现在我的 PHP 代码可以运行了。
我知道已经有类似的问题,我不能相信 $_SERVER['REMOTE_ADDR'] 来获取访问者的真实 IP 地址。
我正在本地主机上测试我的网站,我没有在任何代理后面,我试图显示我的 IP 地址,但 $_SERVER['REMOTE_ADDR'] 给出了 127.0.0.1 ,即服务器的 IP 地址。
如果我将相同的代码在线放在我的服务器中,我会再次收到服务器的 IP 地址。
我试过没有成功:
function get_visitor_ip() {
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ipaddress .= $_SERVER['HTTP_CLIENT_IP'] . ' - ';
}
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ipaddress .= $_SERVER['HTTP_X_FORWARDED_FOR']. ' - ';
}
if(isset($_SERVER['HTTP_X_FORWARDED'])) {
$ipaddress .= $_SERVER['HTTP_X_FORWARDED']. ' - ';
}
if(isset($_SERVER['HTTP_FORWARDED_FOR'])) {
$ipaddress .= $_SERVER['HTTP_FORWARDED_FOR']. ' - ';
}
if(isset($_SERVER['HTTP_FORWARDED'])) {
$ipaddress .= $_SERVER['HTTP_FORWARDED']. ' - ';
}
if(isset($_SERVER['REMOTE_ADDR'])) {
$ipaddress .= $_SERVER['REMOTE_ADDR']. ' - ';
}
if($ipaddress == '') {
$ipaddress = 'UNKNOWN';
}
return $ipaddress;
}
但同样,它返回 127.0.0.1 。
任何替代解决方案?
【问题讨论】:
-
您希望获得什么 IP 地址?在您的本地机器上,连接到您的本地主机。
-
@Daniele 您不使用您用来连接到 Internet 的 IP 地址,因为连接永远不会离开您的 PC。您从本地主机连接到本地主机,因此您将看到本地主机的 IP。
-
我假设您不会通过“互联网”连接到您的本地主机。您在同一台机器上,“直接”连接到您的本地主机,因此不涉及“互联网 IP 地址”。
-
@Ivar , kerbholz 好的!请忘记本地主机上的示例,如果我在我的服务器中在线放置相同的 php 代码,我也会遇到同样的问题。我收到的是服务器而不是客户端的 IP 地址。
-
您的服务器是否恰好在反向代理后面运行?在这个阶段,我建议
var_dump($_SERVER)看看那里有什么
标签: php ip-address