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

Недавно во время изучения очередной микроблог-гео-социальной-сети 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.

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

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

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

  3. доборый день, а есть ли такая база плюс с привязкой языков региона, вот допустим пример с украиной, с этими данными возращало бы ещё язык региона, украинский и русский

  4. Yes, surely you can use it, but please, add link to this page then.

  5. You’ve written a very good entry.

    If it’s fine with you, I would like to request permission to use your article as it fits to my obstruction. I will be happy to negotiate to pay you or hire you for this.

    With Regards from

    Republic Polytechnic

  6. I absolutely love your blog and find many of your post’s to be precisely what I’m looking for. can you offer guest writers to write content available for you? I wouldn’t mind creating a post or elaborating on many of the subjects you write concerning here. Again, awesome web log!

  7. Good day! Do you know if they make any plugins to protect against hackers? I’m kinda paranoid about losing everything I’ve worked hard on. Any recommendations?

  8. Thank you data. really easy to guidance am happy I seen groundwork for a client, and related details.

  9. Glorious info here. This attention-grabbing put up made me smile. Possibly for those who chuck in a newlyweds of pictures it’s going to generate the whole issue much more interesting. Anyhow, in my vocabulary, there are commonly not quite a few good supply enjoy it.

  10. Yes

  11. А в функции использовать можно или в цикле?

  12. Очень хорошо. А умеет ли эта база говорить по русски?

  13. Да. Мне вот тоже интересно :)

Leave a Reply

free counters

Designed by Gabfire
Rambler's Top100