Можно ли получить информацию о местоположении с 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 я нашел один бесплатный сервис: geoplugin. Они создают фрагменты php для использования своего сервиса: geoplugin/php.
Вы можете просмотреть базу данных maxmind и расширение PECL GeoIP.
В моем случае :
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
Что в моем случае верно: я действительно нахожусь в городе Лион, Франция.
Первоначальный вопрос остается актуальным для многих; сейчас конец 2016 года).
Мой ответ после многолетнего опыта геолокации таков...
Реальные сведения о местоположении за пределами «Страны» ненадежны. Вся информация получена из регистрации IP # ISP, и это та важная информация, которая регулярно обновляется и передается основными поставщиками данных. По мере того, как IP-адреса отбрасываются или покупаются, поставщики должны получить подробную информацию о регистрации / изменениях соответствующих предприятий (т. е. интернет-провайдеров). Большинство номеров получаются в «блоках», но не обязательно все они относятся к одному и тому же серверу.
* Многие (если не большинство?) небольших частных веб-сайтов, предоставляющих информацию общественности, используют БЕСПЛАТНУЮ базу данных "Maxmind" и (неправильно) передают ее общественности; прочитайте предостережения Maxmind. Небольшие сайты не имеют ресурсов для постоянного обновления регистрации авторитетных источников.
Бесплатные базы данных maxmind и "ip2location" являются меньшим подмножеством их платных баз данных; см. их предостережения для объяснения того, чего не хватает.
Многие IP-адреса, купленные блоками, распределяются между любым количеством серверов, что приводит к неоднозначности информации. При использовании беспроводного сетевого подключения к интернет-провайдеру, в отличие от, вероятно, стабильного проводного ADSL/кабельного/беспроводного соединения, ошибка может быть весьма поразительной из-за особенно широкого размещения сетевых серверов интернет-провайдера (ретрансляция); в большинстве случаев нестатические изменения между сеансами и, возможно, даже некоторые во время каждого сеанса.
Например, при использовании роумингового беспроводного ключа ноутбука для подключения к интернет-провайдеру меня часто цитируют как находящегося в другом состоянии, и это может быть (здесь, в Австралии) где-то от сотен до тысяч километров от моего фактического местоположения.
Можете ли вы... с помощью PHP?
Используя пару основных поставщиков БД (например, ip2location.com), можно получить доступ к доступным сценариям на стороне сервера, которые можно использовать для получения необходимой информации. И вместо того, чтобы использовать менее надежную бесплатную БД от них, я использую DB1 ip2location для получения посетителей только «Страна», из которой я могу делать то, что хочу, как через Perl, так и через PHP.
Я также АВТОМАТИЧЕСКИ загружаю и распаковываю, в соответствии с предостережениями об использовании, двоичную базу данных ежемесячно сразу после ее обновления. Очевидно, что доступ к поисковым запросам с собственного сайта решает проблемы с удаленным получением и обработкой по запросу.
Для моих требований ip2location FULL db был значительно дешевле, чем Maxmind в год. *Однако БЕСПЛАТНАЯ БД Maxmind более обширна, чем БД ip2location FREE.
Обратите внимание, что при попытке получить у посетителей дополнительные сведения об адресе, состоянии и т. д. я настоятельно рекомендую отображать их таким образом, чтобы посетитель мог внести исправления; чтобы они не ушли разочарованными.
С уважением.
Недавно я обнаружил библиотеку PHP GeoIPLocation.
Это единственный PHP-файл, который вам нужно включить в свой PHP-скрипт. Он автоматически ищет в хорошо обновленной базе данных и возвращает вам информацию о стране.