Определение города по ip-адресу и отображение его на карте

Сегодня была такая задача – определить, из какого города  юзер, который задает вопросы на сайте. Статистика и счетчики нам, в этом деле, особо не помогли, поэтому решили опираться на IP-адрес. Опять же встает вопрос – как реализовать, ведь ясно, что для этого нужна база, в которой соотносятся города и ip-адреса. Поискав в интернете нашел блог mitasych.com, в котором человек реализовал данную задачу, да еще и сделал вывод местоположения юзера на google-карте. А база данных взята с сайта www.maxmind.com, на котором ребята собственно и зарабатывают тем, что создают и постоянно обновляют данную базу. Имеются платная и бесплатная базы городов. Бесплатная отличается только незначительно меньшей зоной покрытия и, вроде как, должна быть ссылка на них. Я, естественно, остановился на бесплатной. Все скрипты и саму базу можно скачать у них с сайта. Однако, как оказалось, имеется на пути пара граблей. Во-первых их сервер постоянно обрубал закачку. Может быть, это было связано с большой нагрузкой, не знаю. Во вторых, когда я все-таки базу скачал и потестил, она мой ip определила как город в моск. области, а я то нахожусь в Москве. Посмотрел в блоге и на еще одном сайте определения города по ip-адресу, там все было в порядке. В итоге стинул базу с блога. Но она староватая, а следующее обновление, как написано на сайте www.maxmind.com, запланировано на апрель 2011, так что если будете у себя сие чудо устанавливать – обязательно все протестируйте. Сама установка ничего сложного из себя не представляет, база хранятся в файле GeoLiteCity.dat Для доступа к ней нужны еще файлы (На всякий пожарный выкладываю файлы у себя) geoip.inc geoipcity.inc geoipregionvars.php отсюда . А чтобы google карта отображалась на вашем сайте - нужно получить код по ссылке: http://code.google.com/apis/maps/signup.html И вставить его в наш код, где 'key='. Функция GeoIP_record_by_addr возвращает массив данных по ip(город, широта,долгота и т.п). Сам код выглядит следующим образом: А вот работа скрипта в действии:
Введите IP:

 

geoiprecord Object
(
    [country_code] => US
    [country_code3] => USA
    [country_name] => United States
    [region] => 
    [city] => 
    [postal_code] => 
    [latitude] => 38
    [longitude] => -97
    [area_code] => 0
    [dma_code] => 0
    [metro_code] => 0
    [continent_code] => NA
)
 
Запись опубликована в рубрике Программирование. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>