使用ipinfo.io的IP位置

时间:2014-08-13 11:06:28

标签: php geolocation

我需要从访客IP获取州和国家/地区。我将使用国家/地区信息来展示定制产品。至于状态信息,它不会用于相同的目的,而只是用于跟踪需求的记录保存。

我在这个网站上找到了一个使用ipinfo.io API的示例,其中包含以下示例代码:

function ip_details($ip) {
$json = file_get_contents("http://ipinfo.io/{$ip}/json");
$details = json_decode($json);
return $details;

}

但是,由于我不需要完整的详细信息,我发现该网站只允许抓取单个字段。所以我正在考虑使用这两个:

1)ipinfo.io/ {ip} / region 2)ipinfo.io/ {ip} / country

像这样:

function ip_details($ip) {
$ip_state = file_get_contents("http://ipinfo.io/{$ip}/region");
$ip_country = file_get_contents("http://ipinfo.io/{$ip}/country");
return $ip_state . $ip_country;

}

或者我会更好:

  function ip_details($ip) {
$json = file_get_contents("http://ipinfo.io/{$ip}/geo");
$details = json_decode($json);
return $details;

}

最后一个在网址中有“/ geo”,用“/ json”缩小第一个选择。目前我倾向于使用2 file_get_contents来上面的第二个选项,但想知道它是否比数组中的最后一个慢。只想最小化加载时间。或者,如果可以给出任何其他方法,将非常感激。

1 个答案:

答案 0 :(得分:1)

简而言之,只需一个请求(file_get_contents在解析网址时发出get请求),请选择第二个选项:

结果是一个简单的数组,通过其键访问您想要的详细信息:

function ip_details($ip) {
    $json = file_get_contents("http://ipinfo.io/{$ip}/geo");
    $details = json_decode($json);
    return $details;
}

$ipinfo = ip_details('86.178.xxx.xxx');

echo $ipinfo['country']; //GB
//etc

关于速度差异 - 99%的开销是网络延迟,因此制作一个请求并解析所需的详细信息比单独提出单独的详细请求要快得多