4

私のサイトがコンピュータの場所を特定できるようにしたいので、誰かがロンドンやマンチェスターなどから私のサイトにアクセスし、コンピュータの場所に応じて特定の地域のユーザーが表示されるようにします。お住まいの地域のユーザーを紹介する出会い系サイトのようなものです。

私は、世界中のすべての都市をリストしたこの GEOIP データベースを見てきました。しかし、私は次に何をすべきかわかりませんか?GEOip データベースから情報を取得して比較する get ip address スクリプトを確認する必要がありますか?

誰かが私を正しい方向に向けることができます。ありがとう。

GeoIP データベース: http://dev.maxmind.com/geoip/geolite

4

7 に答える 7

4

それはあなたの必要性に依存します。Web サービスを使用することをお勧めします。これにより、データベースのホスティングと独自の保守について心配する必要がなくなります。必要なのは、訪問者の IP アドレスを解析し、結果を即座に取得することだけです。このサイトの IP2location Web サービスを使用しています。

于 2012-11-02T09:37:53.607 に答える
4

以下のコードを試してください。

$ip =  $_SERVER['REMOTE_ADDR'];
echo $location = file_get_contents("http://api.hostip.info/country.php?ip=$ip");

ローカルホストでこれを試さないでください。IP 127.0.0.1 が表示されます。

echo $location= file_get_contents("http://api.hostip.info/country.php?ip=12.215.42.19");
//outputs US
于 2012-10-31T15:38:47.960 に答える
4

PHP には GeoIP 用の組み込み関数があります

GeoIP ライブラリ

この 1 つの関数は、大陸、国、都市などを配列で返すため、特に便利です。

geoip_record_by_name

$_SERVER['REMOTE_ADDR']あなたのIPとして使用してください。

$record = geoip_record_by_name( $_SERVER['REMOTE_ADDR']);

于 2012-10-31T15:39:37.470 に答える
1

私は自分のサイトのPHPでこれを使用しました。非常に迅速かつ簡単に消化できます (xml など): http://www.geoplugin.com/

于 2012-10-31T15:40:53.223 に答える
1

このデータベースは次のとおりです。In our recent tests, the GeoIP databases tested at 99.8% accurate on a country level, 90% accurate on a state level in the US, and 83% accurate for cities in the US within a 40 kilometer radius.

私は次のようなものを調べます: PEAR GeoLite ライブラリ

PHP でこのライブラリを使用する簡単なスニペット:

$geoip = Net_GeoIP::getInstance(dirname(__FILE__) . '/data/GeoLiteCity.dat');
$ipaddress = '72.30.2.43'; // Yahoo!
$location = $geoip->lookupLocation($ipaddress);
var_dump($location);

次のような出力が表示されます。

object(Net_GeoIP_Location)[2]
    protected 'aData' =>
        array
        'countryCode' => string 'US' (length=2)
        'countryCode3' => string 'USA' (length=3)
        'countryName' => string 'United States' (length=13)
        'region' => string 'CA' (length=2)
        'city' => string 'Sunnyvale' (length=9)
        'postalCode' => string '94089' (length=5)
        'latitude' => float 37.4249
        'longitude' => float -122.0074
        'areaCode' => int 408
        'dmaCode' => float 807
于 2012-10-31T15:41:41.543 に答える
0

おそらく、すでにGEOIPが PECL 拡張機能としてインストールされているはずです。そうでない場合は、自分でインストールできます。

国以外の特定のものが必要な場合は、DB を取得するために料金を支払う必要がありますが、機能はそのままです。

于 2012-10-31T15:40:01.437 に答える