6

PHPでユーザーのIPアドレスから場所の詳細を取得することは可能ですか?

助言がありますか ??

ありがとう

4

8 に答える 8

6
$ip = '98.229.152.237';
$xml = simplexml_load_file("http://ipinfodb.com/ip_query.php?ip=$ip");
print_r($xml);

出力:

SimpleXMLElement Object
(
    [Ip] => 98.229.152.237
    [Status] => OK
    [CountryCode] => US
    [CountryName] => United States
    [RegionCode] => 33
    [RegionName] => New Hampshire
    [City] => Manchester
    [ZipPostalCode] => 03103
    [Latitude] => 42.9403
    [Longitude] => -71.4435
    [Timezone] => -5
    [Gmtoffset] => -5
    [Dstoffset] => -4
)
于 2009-12-02T06:16:47.863 に答える
4

あなたはGeoIPサービスのいくつかの種類を使用する必要があります

私がグーグルで見つけた1つの無料サービス:geoplugin。彼らは彼らのサービスを使用するためにsnippletsをphpします:geoplugin / php

于 2009-12-02T05:36:26.573 に答える
3

maxmindデータベースとGeoIPPECL拡張機能を確認できます。

私の場合 :

  • pecl install geoip「 」で拡張機能をインストールしました
  • そして、geolitecityデータベースをダウンロードしてコピーした/usr/share/GeoIP/GeoIPCity.datので、PECL拡張機能によって検出されます。

PEAR::Net_GeoIPPECL拡張機能をインストールできない場合は、役立つPEARパッケージ()も必要であることに注意してください。


これらの両方をインストールしたら、次の種類のコードを使用できます。

$ip = '82.229.x.y';     // replace with your IP address
var_dump(geoip_record_by_name($ip));

そして、あなたはこの種の出力を得るでしょう:

array
  'continent_code' => string 'EU' (length=2)
  'country_code' => string 'FR' (length=2)
  'country_code3' => string 'FRA' (length=3)
  'country_name' => string 'France' (length=6)
  'region' => string 'B9' (length=2)
  'city' => string 'Lyon' (length=4)
  'postal_code' => string '' (length=0)
  'latitude' => float 45.75
  'longitude' => float 4.84999990463
  'dma_code' => int 0
  'area_code' => int 0

私の場合、これは真実です。私は確かにフランスのリヨン市にいます。

于 2009-12-02T05:41:27.203 に答える
1

PEARGeoIPライブラリを確認してください。

于 2009-12-02T05:36:59.253 に答える
1

最初の質問は、多くの人にとって依然として重要です。現在2016年後半)。

GEO の位置特定に関する長年の経験からの私の答えは次のとおりです...

「国」を超える場所の詳細の実際のレポートは信頼できません。すべての情報は IP# ISP 登録から収集され、定期的に更新され、主要なデータ サプライヤーによって渡される関連情報です。IP# がドロップまたは購入されると、サプライヤーは関連するビジネス (つまり ISP) の登録/変更に関する詳細を取得する必要があります。ほとんどの数値は「ブロック」で取得されますが、必ずしもすべてが同じサーバーに関連しているわけではありません。

*一般に情報を提供する小規模な私設ウェブサイトの多く(ほとんどではないにしても)は、「Maxmind」無料データベースを使用し、(不適切に)それを一般に公開しています。Maxmind の警告をお読みください。小規模なサイトには、機関の登録を定期的に更新するためのリソースがありません。

無料の maxmind および「ip2location」DB は、有料データベースの小さなサブセットです。欠けているものの説明については、警告を参照してください。

ブロックで購入された多くの IP# は任意の数のサーバーで共有され、これが情報のあいまいさにつながります。ISP へのワイヤレス ネットワーク接続を使用する場合、おそらく安定した有線 ADSL/ケーブル/何とか接続とは対照的に、ISP ネットワーク サーバー (中継) が特に広範囲に配置されるため、エラーa は非常に驚くべきものになる可能性があります。ほとんどの場合、セッション間で非静的に変更され、各セッション中に変更されることもあります。

例として、ISP 接続にローミング ワイヤレス ラップトップ ドングルを使用している場合、私は別の州にいるとよく言われます。実際の場所から数百から数千 km 離れた場所 (ここではオーストラリア) にいる可能性があります。

あなたは... PHPでできますか?

主要な DB サプライヤー (ip2location.com など) を使用すると、必要な情報を取得するために使用できるサーバー側のスクリプトにアクセスできます。そして、信頼性の低い無料の DB ではなく、ip2location の DB1 を使用して、Perl と PHP の両方を介してやりたいことを実行できる訪問者「国」のみを取得します。

また、使用上の注意に従って、バイナリデータベースが更新された直後に毎月自動ダウンロードして解凍します。明らかに、自分のサイトからルックアップにアクセスすることで、リモートでのオンデマンドの取得と処理の問題が解決されます。

私の要件では、ip2location FULL db は年間 Maxmind よりもかなり安かったです。*ただし、Maxmind FREE DB は ip2location FREE DB よりも広範です。

訪問者に追加の住所や州の詳細などを取得しようとするときは、訪問者が修正できるように表示されることを強くお勧めします。彼らが欲求不満のままにならないように。

よろしく。

于 2016-10-27T18:47:28.063 に答える