Быстрый способ получить локацию пользователя по его IP


Для решения данной задачи можно скачать какую-то базу данных GeoIP или обратиться к какому-то стороннему сервису. Второй вариант будет гораздо проще. Одним из сервисов, который может решить нашу задачу является http://ipinfo.io. Они предоставляют название хоста, геолокацию, владельца сети и другую информацию:

$ curl ipinfo.io/8.8.8.8 { "ip": "8.8.8.8", "hostname": "google-public-dns-a.google.com", "loc": "37.385999999999996,-122.0838", "org": "AS15169 Google Inc.", "city": "Mountain View", "region": "CA", "country": "US", "phone": 650 }

Пример того, как можно извлечь данные в PHP:

$ip = $_SERVER['REMOTE_ADDR'];
$details = json_decode(file_get_contents("http://ipinfo.io/{$ip}/json"));
echo $details->city; // -> "Mountain View"

Точно такое же действие можно сделать и на клиентской стороне.

Вот пример на jQuery:

$.get("http://ipinfo.io", function(response) { console.log(response.city); }, "jsonp");