Теперь о том, как что работает.
Данные берутся из GET запроса по адресу: http://ip-api.com/php/ для текущего IP, http://ip-api.com/php/208.80.152.201 для конкретного или http://ip-api.com/php/atuin.ru для домена.
Для получения данных на русском языке используем запрос: http://ip-api.com/php/?lang=ru
Успешный результат вернет данные:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
array ( 'status' => 'success', 'country' => 'COUNTRY', 'countryCode' => 'COUNTRY CODE', 'region' => 'REGION CODE', 'regionName' => 'REGION NAME', 'city' => 'CITY', 'zip' => ZIP CODE, 'lat' => LATITUDE, 'lon' => LONGITUDE, 'timezone' => 'TIME ZONE', 'isp' => 'ISP NAME', 'org' => 'ORGANIZATION NAME', 'as' => 'AS NUMBER / NAME', 'query' => 'IP ADDRESS USED FOR QUERY', ) |
Ошибочный:
1 2 3 4 5 |
array ( 'status' => 'fail', 'message' => 'ERROR MESSAGE', 'query' => 'IP ADDRESS USED FOR QUERY', ) |
Пример использования:
1 2 3 4 5 6 7 8 9 |
<?php $ip = $_SERVER['REMOTE_ADDR']; $query = @unserialize(file_get_contents('http://ip-api.com/php/'.$ip.'?lang=ru')); if($query && $query['status'] == 'success') { echo 'Привет, посетитель из '.$query['country'].', '.$query['city'].'!'; } else { echo 'Не удалось определить локацию'; } ?> |
Пример:
Более подробную информацию можно найти в документации на сайте разработчика: ip-api.com
Определение географии по ip с использованием php библиотеки nikolaevevgegeoip:
Есть ещё библиотека которая называется nikolaevevgegeoip, использовать её необходимо с CRM Wordperss, Bitrix или Joomla(хотя как написано на странице библиотеки - у автора в планах дописать её чтобы она могла работать с другими CMS, видимо на текущий момент это не реализовано). Для того чтобы использовать библиотеку скопируйте код библиотеки с сайта разработчика по ссылке http://blog.ivru.net/?id=82, затем разместите его в каком либо php файле на Вашем хостинге после чего подключите к Вашей cms используя вызов require_once("адрес_php_файла");
В общем виде чтобы получить geo-информацию с использованием указанной библиотеки можно выполнить следующий код:
1 2 3 4 5 |
require_once($_SERVER["DOCUMENT_ROOT"] . "/local/templates/main/phpscripts/nikolaevevgeGeoIp.php"); //адрес заменить на тот где у Вас находится файл библиотеки var_dump(nikolaevevgeGeoIp::get($_SERVER["REMOTE_ADDR"])); //вместо $_SERVER["REMOTE_ADDR"] можно указать ip адрес для которого Вы планируете получить geo-информацию или вовсе вызвать метод get класса nikolaevevgeGeoIp без параметров. |
Из особенностей библиотеки: она умеет автоматически определять CMS WordPress, Bitrix, Joomla и используя настройки CMS соединяться с базой данных Вашего сайта и создавать в ней таблицы для хранения кеша. Для работы библиотека использует собственный API, обращения к которому кешируются в вышеупомянутые таблицы. Библиотека разрабатывается не компанией, у неё есть вполне конкретный автор, если кого-то интересует вопрос разработки собственной такой библиотеки, возможно стоит почитать эту статью — https://abdullinru.ru/biblioteka-nikolaevevgegeoip.html - в ней автор даёт интервью и рассказывает о том с какими вопросами он столкнулся в рамках работы над библиотекой и как они были решены, а так же рассказывает о планах развития библиотеки.
не надо. уже сделал
Нет ли возможности развнуть ваш пример:
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$query = @unserialize(file_get_contents('http://ip-api.com/php/'.$ip.'?lang=ru'));
if($query && $query['status'] == 'success') {
echo 'Привет, посетитель из '.$query['country'].', '.$query['city'].'!';
} else {
echo 'Не удалось определить локацию';
}
?>
на все определяемые параметры?
Скольок запросов в месяц может обрабатать эта программа? Есть ли какое-либо огрнаичение на количество обрабатываемых запросов в месяц, а год или всего?
Точность совсем никакая. У меня показало что я в Камышено, я даже не знаю где это. А я в Ростовской области. У нас сервисы часто показывают Краснодарский край, но это то хоть рядом, примерно 60 км. А про Камышин я вообще не слышал.
Кажется, Камышин в Волгоградской области.
И сразу сюрприз: в примере определяется, что я в городе Vlaardingen, а это в ста километрах от меня. Так что точность кода так себе.... ((
Это не точность кода, а точность сервиса ip-api.com