使用API​​服务获取访问者IP

时间:2018-12-19 20:28:11

标签: javascript php ip

我想通过使用任何在线服务(例如https://www.ipstack.comhttps://www.ipify.org/)来获得访问者IP,但是当我使用PHP代码时,该问题返回了服务器IP。我了解这是因为代码在服务器中运行,并且返回服务器IP,但是如何获得访问者IP? 我不想使用REMOTE_ADDR左右。

我尝试使用getJSON获取访问者IP,但问题是如何将数据传递到PHP代码并在那里使用它。

=======更新======

其他页面无法解决问题,因此请不要添加链接。

我要使用此api的问题: http://api.ipstack.com/check?access_key=xxxxx&output=json

在这里,我们将以JSON格式获取数据。但是如何将数据传递给PHP?

==========更新========== 我现在正在使用的代码来获取访问者IP。

foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key) {
    if (array_key_exists($key, $_SERVER) === true) {
        foreach (array_map('trim', explode(',', $_SERVER[$key])) as $ip) {
            if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false) {
                return $ip;
            }
        }
    }
}

谢谢

1 个答案:

答案 0 :(得分:0)

  

我要使用此api的问题:http://api.ipstack.com/check?access_key=xxxxx&output=json

/check API是查找进行该API调用的IP地址的快捷方式。如果您是通过PHP在服务器上制作的,它将始终返回服务器的IP地址。

使用标准查找并将其传递给用户REMOTE_ADDR,如https://ipstack.com/documentation#standard所述:

$url = "https://api.ipstack.com/{$_SERVER['REMOTE_ADDR']}?access_key=YOUR_ACCESS_KEY";
$json = file_get_contents($url);