PHP で IP から位置情報の詳細を取得する
-
11-09-2019 - |
質問
PHPでユーザーのIPアドレスから場所の詳細を取得することは可能ですか。
助言がありますか ??
ありがとう
解決
$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
)
他のヒント
あなたは、いくつかの雌牛を使用する必要がジオIPサービスの
私はGoogleで見つけた一つの無料サービス: geoplugin に。 彼らは彼らのサービスを利用するsnippletsをPHPます:
のhref="http://www.geoplugin.com/webservices/php" rel="nofollow noreferrer"> geoplugin / PHPをご覧ください。 マックスマインドデータベース, 、 そしてその GeoIP PECL 拡張.
私の場合 :
- 「」を使用して拡張機能をインストールしました
pecl install geoip
" - そして、私はダウンロードしました ジオライトシティデータベース そしてそれをコピーしました
/usr/share/GeoIP/GeoIPCity.dat
そのため、PECL 拡張機能によって検出されます。
いくつかの PEAR パッケージも存在することに注意してください (PEAR::Net_GeoIP
) PECL 拡張機能をインストールできない場合に役立ちます。
これらの両方をインストールすると、次のようなコードを使用できるようになります。
$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
私の場合、これは真実です:私は確かにフランスのリヨン市にいます。
PEARののGeoIPライブラリをチェックします。
最初の質問は、多くの関連するまま。今後半2016)。
次のようにGEOの位置決めとの長年の経験の後に私の答えは...
「国」を越えた場所の詳細のリアルタイム報告は信頼できないです。すべての情報は、IP#ISP登録から収集され、それは、関連する情報が定期的に更新し、主要なデータサプライヤによって渡されるということです。 IP番号としてSを落としたりサプライヤーは、当該事業者の登録/変更(すなわちのISP)の詳細を取得する必要があります買っています。ほとんどの数字は、同じサーバーに必ずしも関連する「ブロック」で得られたすべてではないされます。
*多くの(?そうでない場合は、ほとんどの)公共の使用「Maxmind」に情報を供給小さくプライベーターのウェブサイトのDB FREEと(不適切な)公衆にそれを渡します。 Maxmindの注意事項をお読みください。小規模なサイトは、権限登録の一定の更新のためのリソースを持っていません。
無料maxmindと「IP2Locationの」DBが彼らのペイ・フォーデータベースの小さいサブセットです。欠けているものの説明については、彼らの注意事項を参照してください。
ブロックで買った多くのIP#sは任意の数のサーバー上で共有され、これは情報のあいまいさにつながります。 ISPへのワイヤレスネットワーク接続を使用する場合、おそらく安定した有線ADSL /ケーブル/何とか接続とは対照的に、erroraのためISPネットワークサーバ(中継)の特に広い配置の非常に驚くべきであることができます。ほとんどの場合、非静的にもいくつかの各セッションの間に、おそらくセッションとの間で変化します。
離れて私の実際の場所からのKMの数百〜数千からどこでもは、一例として、私は多くの場合、別の状態にあるものとして引用されていますISPの接続のためのローミングワイヤレスノートパソコンのドングルを使用している場合、それは(ここではAUで)することができます。
をすることができます... PHPとの
DBのサプライヤーの主要なカップル(すなわちip2location.com)1は、必要な情報を得るために使用することができる利用可能なサーバーサイドスクリプトにアクセスする必要がありますを使用します。そして、いうより、そこから信頼性の低い自由DB私は、私はPerlとPHPの両方を経由してにやりたいことができる唯一のこれからの訪問者「国」を得るためにIP2LocationののDB1を使用します。
私も自動ダウンロードし、それが更新された直後に、使用注意事項に従って、月次ベースでバイナリデシベルを解凍します。明らかなもの自分のサイトからルックアップにアクセスすると、リモート・オンデマンドの取得及び処理の問題を克服します。
私の要件についてはIP2LocationのFULLデシベルは年間Maxmindよりかなり安かったです。 ※ただしMaxmind FREEデシベルはIP2LocationのFREE DBよりも広範囲である。
訪問者に、私は強くそれは訪問者が修正を行うことができますように表示される提案など、追加のアドレスや状態の詳細を取得しようとしたときに注意してください。彼らは不満を残しないようにます。
よろしくます。
$ip = "66.96.147.144";
$geoPlugin_array = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip=' . $ip) );
echo '<pre>';
print_r($geoPlugin_array);
OUTPUT :
Array
(
[geoplugin_request] => 66.96.147.144
[geoplugin_status] => 200
[geoplugin_credit] => Some of the returned data includes GeoLite data created by MaxMind, available from http://www.maxmind.com.
[geoplugin_city] => Burlington
[geoplugin_region] => MA
[geoplugin_areaCode] => 781
[geoplugin_dmaCode] => 506
[geoplugin_countryCode] => US
[geoplugin_countryName] => United States
[geoplugin_continentCode] => NA
[geoplugin_latitude] => 42.5051
[geoplugin_longitude] => -71.204697
[geoplugin_regionCode] => MA
[geoplugin_regionName] => Massachusetts
[geoplugin_currencyCode] => USD
[geoplugin_currencySymbol] => $
[geoplugin_currencySymbol_UTF8] => $
[geoplugin_currencyConverter] => 1
)
私が最近見つけ PHP GeoIPLocationライブラリの
あなたのPHPスクリプトに含める必要がある。その一つのPHPファイル。それは自動的に、よく更新されたデータベースを検索し、あなたのための国の詳細情報を返します。