Иконка какбы показывает как по планете что-то сканируют. Наверняка ищут где вы находитесь.

Недавно во время изучения очередной микроблог-гео-социальной-сети BrightKite, я встретил заманчивое предложение узнать моё местонахождение по моему IP-адресу.  На BrightKite эта функция была реализована при помощи java-апплета, но мне, конечно же, было нужно решение на PHP.

Конечно же в этом деле главная проблема – базы. Недолго загуглив я встретил сервис GeoIP от Бостонской комапнии MaxMind. Ребята представляют базы и API для работы с ними за деньги и бесплатно. Понятно, что бесплатно мы получим базу менее детальную, но для моих нужд этого вполне достаточно.

maxmindЕсли вас пугает слово API, сразу замечу, что GeoIP это не веб-сервис. База представлена в бинарном виде, и набор библиотек читает этот формат. Разработчики говорят, что это для того, чтобы проводить “быстрый поиск”.

Итак, что нужно, для использования библиотеки?

  1. Надо скачать библиотеку и свежую версию базы (28мб).  Мне хватило файлов geopipcity.inc, geoip.inc, geoipregionvars.php.
  2. Выполнить следующий код в вашем скрипте:
include("geoipcity.inc");
$gi = geoip_open("GeoLiteCity.dat",GEOIP_STANDARD);
$res = GeoIP_record_by_addr($gi,$_SERVER['REMOTE_ADDR']);
geoip_close($gi);

Как можно заметить, код подключает библиотеку, затем подключает базу, смотрит запись по адресу клиента ($_SERVER['REMOTE_ADDR']) и закрывает указатель.

Данные выводятся в таком виде:

geoiprecord Object
(
    [country_code] = UA
    [country_code3] = UKR
    [country_name] = Ukraine
    [region] = 05
    [city] = Donetsk
    [postal_code] =
    [latitude] = 48
    [longitude] = 37.8
    [area_code] =
    [dma_code] =
)

Если кому-то интересно, код всегда можно проверить при помощи моей “Геолокаційної Вівці”: http://meelk.com.ua/geo

Кстати, для тех кому интересно: платная версия стоит $370, плюс по $90 в месяц за обновления. Бесплатная версия покрывает 99.5% территории, а платная – 99.8%  на уровне стран, и 79% и 83% соответственно на уровне городов.

А базу можно взять в формате CSV (100Mb в распакованном виде) для использования в своих БД.

This entry was posted on Sunday, December 28th, 2008 and is filed under PHP-разработка. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

2 Responses to “Использование GeoIP”

  1. Спасиб, пригодилось!

  2. Я еще его не использовал.

Leave a Reply

free counters

Designed by Gabfire
Rambler's Top100