【问题标题】:$_SERVER['REMOTE_ADDR'] is not returning ip address$_SERVER['REMOTE_ADDR'] 没有返回 IP 地址
【发布时间】:2015-06-19 13:33:33
【问题描述】:

我在 php 中使用$_SERVER['REMOTE_ADDR'] 来查找客户端的ip address

$ipaddress=$_SERVER['REMOTE_ADDR'];

echo $ipaddress;

返回 ::1

我也尝试了以下代码,但结果也一样。

if ($_SERVER['HTTP_CLIENT_IP'])
    $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if($_SERVER['HTTP_X_FORWARDED_FOR'])
    $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if($_SERVER['HTTP_X_FORWARDED'])
    $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if($_SERVER['HTTP_FORWARDED_FOR'])
    $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if($_SERVER['HTTP_FORWARDED'])
    $ipaddress = $_SERVER['HTTP_FORWARDED'];
else if($_SERVER['REMOTE_ADDR'])
    $ipaddress = $_SERVER['REMOTE_ADDR'];
else
    $ipaddress = 'UNKNOWN';

我做错了什么?如何获取客户 ip?

我会使用 ip 通过ipinfo.io 查找客户的位置。

感谢您的宝贵时间。

【问题讨论】:

  • ::1 是有效的 ipv6 localhost 地址
  • 当我在脚本中使用$idaddress 使用ipinfo.io 获取位置时,我得到undefined property: stdclass::$country。无论如何,我需要完整的IP 地址

标签: php ip-address


【解决方案1】:

::1 是实际 IP。它是一个 ipv6 地址(即 localhost)。如果您使用的是 ipv4,它将是 127.0.0.1.

如果您想获得不同的 IP 地址,则需要通过不同的网络接口连接到服务器。

【讨论】:

  • 当我在脚本中使用$idaddress 使用ipinfo.io 获取位置时,我得到undefined property: stdclass::$country
  • 如果我现在把这个相同的脚本放在服务器上,它会工作并给我完整的 IP 地址吗?
  • 是的,请检查主机文件
  • 我没听明白。你所说的主机文件是什么意思?你能澄清一下
猜你喜欢
  • 2017-04-28
  • 1970-01-01
  • 2016-05-12
  • 2012-09-23
  • 2017-01-31
  • 2013-10-19
  • 1970-01-01
  • 1970-01-01
  • 2017-05-04
相关资源
最近更新 更多