web-dev-qa-db-ja.com

IPアドレスに基づく地理的位置-PHP

IPに基づいて訪問者の位置を取得するための高速で正確な方法を探しています。

Ipinfodb.comを試してみましたが、API呼び出しを行うときに、それらのAPIによってWebサイトが大幅に遅れました。

他にどのようなサービスを提案しますか?

21
Latox

Geo-IP情報を取得する

ジオIPサーバー(netip.de)にチェックを要求し、IPの場所(ホスト、州、国、町)を返します。

<?php
       $ip='94.219.40.96';
       print_r(geoCheckIP($ip));
       //Array ( [domain] => dslb-094-219-040-096.pools.arcor-ip.net [country] => DE - Germany [state] => Hessen [town] => Erzhausen )

       //Get an array with geoip-infodata
       function geoCheckIP($ip)
       {
               //check, if the provided ip is valid
               if(!filter_var($ip, FILTER_VALIDATE_IP))
               {
                       throw new InvalidArgumentException("IP is not valid");
               }

               //contact ip-server
               $response=@file_get_contents('http://www.netip.de/search?query='.$ip);
               if (empty($response))
               {
                       throw new InvalidArgumentException("Error contacting Geo-IP-Server");
               }

               //Array containing all regex-patterns necessary to extract ip-geoinfo from page
               $patterns=array();
               $patterns["domain"] = '#Domain: (.*?)&nbsp;#i';
               $patterns["country"] = '#Country: (.*?)&nbsp;#i';
               $patterns["state"] = '#State/Region: (.*?)<br#i';
               $patterns["town"] = '#City: (.*?)<br#i';

               //Array where results will be stored
               $ipInfo=array();

               //check response from ipserver for above patterns
               foreach ($patterns as $key => $pattern)
               {
                       //store the result in array
                       $ipInfo[$key] = preg_match($pattern,$response,$value) && !empty($value[1]) ? $value[1] : 'not found';
               }

               return $ipInfo;
       }

?>
38
David Croft

最高で最新のGeoplugginAPIは無料であり、このWebサイトで使用されている制限はありません http://spidersoft.in ロケーションベースのダウンロードについては、このリンクから詳細を参照

http://geoplugin.com

4
jacob justin

これをお試しください http://ip.codehelper.io/

PHPコード。コードはリクエストを自動的にキャッシュするので、サーバーは複数のリクエストを送信しません。IPアドレス、国、市などの情報を返します。

<?php
// Required Libraries
require_once("ip.codehelper.io.php");
require_once("php_fast_cache.php");

// New Class
$_ip = new ip_codehelper();

// Detect Real IP Address & Location
$real_client_ip_address = $_ip->getRealIP();
$visitor_location       = $_ip->getLocation($real_client_ip_address);

// Output result
echo $visitor_location['Country']."";
echo "<pre>";
print_r($visitor_location);
3
Ken Le

この分野の市場リーダーであり、エンタープライズソリューションを提供する企業は、 デジタルエレメント です。ローカルにインストールしたり、Webサービス経由でアクセスしたりできるサーバーにアクセスするために、PHPを含む幅広いAPIを提供します。データは高品質であり、ソリューションのパフォーマンスは非常に優れています。 MaxMindは、良い評価を受ける別のオプションでもあります。

最適な精度を得るには、特定のネットワーク内でかなりの変更が行われる可能性があるため、毎週更新されるサービスまたはソリューションを選択することをお勧めします。コストは、更新の頻度、地理データの粒度、必要な追加フィールドまたはデータベースの数に依存します。一部のプロバイダーは、言語、人口統計、会社、ドメインなどを提供しています。

2
RC.