61

特定のIPアドレスから、できればISO_3166-1形式で国を取得する簡単な方法を知っている人はいますか?

4

15 に答える 15

41

インターネット サービスを使用する方法と、ある種のローカル リスト (おそらくライブラリにラップされている) を使用する方法の 2 つがあります。何を求めるかは、何を構築するかによって異なります。

サービスの場合:

リストの場合:

于 2008-09-15T19:45:33.067 に答える
38

多くの人 (私の会社を含む) が MaxMind GeoIP を使用しているようです。

有料版ほど正確ではない無料版のGeoLiteがありますが、単純なものを探しているだけなら、それで十分かもしれません.

于 2008-08-04T06:26:22.370 に答える
11

パブリックAPIを使用した無料のサービスは次のとおりです 。http ://www.hostip.info/use.html

于 2008-08-04T05:21:59.660 に答える
9

ipinfodbは、IP から国へ、またはその逆のための無料のデータベースと API を提供します。MaxMind の無料データを使用します。データは毎月更新され、かなりの精度を備えた優れた無料の代替手段です.

于 2010-01-13T13:13:54.450 に答える
6

http://hostip.infoサイトがどれほど正確かわかりません。そのサイトにアクセスしたところ、私の国はカナダであると報告されました。私は米国にいて、私のオフィスが使用しているISPは米国でのみ運営されています。推測を修正することはできますが、このサービスを使用して国ごとにWebサイトの訪問者を追跡している場合、データが正しいかどうかを知る方法はありません。もちろん、私は1つのデータポイントにすぎません。.csvファイルであるGeoLiteCountryデータベースをダウンロードしましたが、IPアドレスがUSとして正しく識別されました。

MaxMind製品ライン(有料または無料)のもう1つの利点は、データがあり、別のシステムにWebサービスを呼び出すことによるパフォーマンスの低下が発生しないことです。

于 2008-08-04T14:02:14.493 に答える
3

最も正確なのはDigital Elements NetAcuity です。それは無料ではありませんが、ほとんどの場合、支払った料金を得ることができます。

于 2008-09-27T03:04:41.713 に答える
3

このphpコードを試してください

  <?php  $ip = $_SERVER['REMOTE_ADDR'];
    $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true");
    $json = json_decode($json,true);
    $timezone = $json[localTimeZone];?>
于 2012-07-30T08:07:35.403 に答える
3

これには、私のサービスhttp://ipinfo.ioを使用できます。API は、IP アドレスに関するさまざまな詳細をすべて返します。

$ curl ipinfo.io/8.8.8.8
{
  "ip": "8.8.8.8",
  "hostname": "google-public-dns-a.google.com",
  "loc": "37.385999999999996,-122.0838",
  "org": "AS15169 Google Inc.",
  "city": "Mountain View",
  "region": "CA",
  "country": "US",
  "phone": 650
}

国コードのみが必要な場合は、URL に /country を追加するだけです。

$ curl ipinfo.io/8.8.8.8/country
US

以下は、使用できる一般的な PHP 関数です。

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

$details = ip_details("8.8.8.8");

echo $details->city;     // => Mountain View
echo $details->country;  // => US
echo $details->org;      // => AS15169 Google Inc.
echo $details->hostname; // => google-public-dns-a.google.com

これらの例では IP 8.8.8.8 を使用しましたが、ユーザーの IP の詳細が必要な場合は、$_SERVER['REMOTE_ADDR']代わりに渡してください。詳細については、http://ipinfo.io/developersをご覧ください。

于 2014-08-26T04:49:49.810 に答える
3

Google のclientlocation が返されます (私の例)

latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
location = "IP location: " + getFormattedLocation();
document.getElementById("location").innerHTML = location;
于 2010-01-13T13:25:21.400 に答える
3

この質問に対して提供されている解決策を使用できます。

ただし、2 桁の国コードが返されます。

于 2011-10-19T14:04:01.440 に答える
2

この作業を行う Web サービス API を次のように使用できます。

see example of service: http://ip-api.com and usage: http://whatmyip.info
于 2014-05-26T14:59:31.140 に答える
2

http://www.mmtutorialvault.com/php-ip-to-country-function/の関数 ipToCountry($ip) を使用します

于 2013-06-27T17:54:01.927 に答える