Получение сведений о местоположении из IP в PHP

Можно ли получить данные о местоположении из IP-адреса пользователей в PHP.

Какие-либо предложения ??

благодаря

$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 ) 

Вам нужно использовать некоторые ролики Geo IP Service

Одно бесплатное обслуживание, которое я нашел в google: geolugin . Они используют php snipplets для использования своего сервиса: geplugin / php

Вы можете взглянуть на базу данных maxmind и расширение GeoIP PECL .

В моем случае :

  • Я установил расширение с помощью " pecl install geoip "
  • И я загрузил базу данных geolitecity и скопировал ее в /usr/share/GeoIP/GeoIPCity.dat чтобы найти ее с помощью расширения PECL.

Обратите внимание, что также вам PEAR::Net_GeoIP пакет 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 

Что, в моем случае, верно: я действительно в городе Лион, FR.

Проверьте библиотеку PEAR GeoIP .

Первоначальный вопрос остается актуальным для многих; в конце 2016 года).

Мой ответ после многолетнего опыта работы с размещением GEO выглядит следующим образом …

Реальная отчетность о местоположении за пределами «Страны» ненадежна. Вся информация почерпнута из регистрации IP # ISP, и это релевантная информация, которая регулярно обновляется и передается основными поставщиками данных. По мере удаления или покупки IP-пакетов поставщики должны получить информацию о регистрации / изменениях соответствующих предприятий (например, интернет-провайдеров). Большинство чисел получены в «блоках», но не все они обязательно относятся к одному и тому же серверу.

* Многие (если не большинство?) Небольших частных веб-сайтов, предоставляющих информацию для общественности, используют «Maxmind» FREE db и (ненадлежащим образом) передают это публике; прочитайте оговорки Maxmind. Меньшие сайты не имеют ресурсов для постоянного обновления регистраций полномочий.

Свободные базы данных maxmind и «ip2location» являются меньшим подмножеством их баз данных для оплаты; см. их оговорки для объяснения того, чего не хватает.

Многие IP-адреса, купленные в блоках, делятся на любое количество серверов, что приводит к неоднозначности информации. При использовании беспроводного сетевого подключения к интернет-провайдеру, в отличие от, вероятно, стабильного проводного соединения ADSL / кабель / бла, ошибка может быть весьма поразительной из-за особенно широкого размещения сетевых серверов ISP (ретрансляция); в большинстве случаев нестатические изменения между сессиями и, возможно, даже некоторые в течение каждого сеанса.

В качестве примера при использовании роуминг-портативного портативного компьютера для подключения к интернет-провайдеру я часто цитируется как находящийся в другом состоянии, и это может быть (здесь в AU) где-нибудь от сотен до тысяч KM от моего фактического местоположения.

Можете ли вы … с PHP ?

Используя основную пару поставщиков БД (например, ip2location.com), у вас будет доступ к доступным сценариям на стороне сервера, которые могут быть использованы для получения необходимой информации. И вместо того, чтобы иметь менее надежную бесплатную БД из них, я использую DB1 ip2location для получения посетителей «Страна», из которых я могу делать то, что хочу, через Perl и PHP.

Я также автоматически загружаю и декомпрессию, как и в случае использования, двоичный db на ежемесячной основе сразу после его обновления. Очевидно, что доступ к просмотру с собственного сайта устраняет проблемы с удаленным приобретением и обработкой по требованию.

Для моих требований ip2location FULL db был значительно дешевле Maxmind в год. * Тем не менее, Maxmind FREE db более обширен, чем свободная БД IB2location.

Обратите внимание, когда вы пытаетесь получить посетителям дополнительный адрес и данные о состоянии и т. Д. Я настоятельно рекомендую, чтобы он отображался так, как посетитель может внести исправления; чтобы они не расстроились.

С уважением.

  $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 )