首页 > 解决方案 > 使用 API 服务获取访问者 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?

==========UPDATE========== 我现在用来获取访问者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;
            }
        }
    }
}

谢谢

标签: javascriptphpip

解决方案


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

/checkAPI 是查找进行该 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);

推荐阅读