GeoIP на PHP

Дата публикации: Апрель 22, 2011 - 19:12:00, пт

Небольшая задачка – получить информацию о стране и регионе по IP-адресу. Очень удобная вещь, если нужно к примеру отсеивать голоса в голосовании по географическому признаку (чаще всего все прокси-сервера находятся не в России).

Основной проблемой стала задача найти базу этих самых IP адресов, причем желательно всегда держать ее в актуальном состоянии. На помощь приходит сервис ipgeobase.ru.

Ipgeobase – это ресурс, предоставляющий базу данных IP-адресов, отсортированных по географическому признаку (Россия и Украина – с точностью до города, остальные по странам). База в формате TXT, скачать можно здесь.

Я написал на PHP два небольших скрипта: один (convert.php) конвертирует текстовый формат ipgeobase в базу данных sqlite3, а другой (check.php) – обрабатывает GET-запросы и возвращает информацию по IP-адресу в формате JSON.

Скачать geoip-1.0.1.7z (~2 Мб)

History:

  • 22.04.2011 (1.0) – первый релиз.
  • 22.04.2011 (1.0.1) – перепутал lat и lng местами, исправил)

Пример запроса check.php. По умолчанию скрипт смотрит IP-адрес пользователя, но так же можно вручную задать IP через GET-параметр ip (например, check.php?ip=2.2.2.2).

Пример ответа:

  1. {
  2.     info: {
  3.         block_from: "3279618047"
  4.         block_to: "3279609856"
  5.         code: "RU"
  6.         city: 1956
  7.     }
  8.     city: {
  9.         id: 1956
  10.         name: "Нижний Новгород"
  11.         region: "Нижегородская область"
  12.         district: "Приволжский федеральный округ"
  13.         lng: 56.329918
  14.         lat: 44.009193
  15.     }
  16. }

Так же Ipgeobase сделали свой сервис получения информации по IP через http в формате xml.

Пример: http://ipgeobase.ru:7020/geo?ip=144.206.192.6

Теги: php кодинг
Просмотров: 814

Что скажете?

Имя:
Код Код с картинки: