rss
Навигация
ИнструментыЯмаПолезные ссылкиЗачем мне блог?Рейтинг контентаКодекс админаФотогалереяi-payrss
Последние записи
Смонтировал видюху, моменты из жизни 2013-15На уазике до ск. Верблюд по Торгашинскому хребтуBreaks волна #9 осенний funkК нам на дачу пришел медведьСтарая бомба! Крутой рифмоплет
Каменты [еще]
2017-05-17 11:25:31 [articles] Владимир:
2016-12-20 17:49:41 [articles] Виталик:
2016-12-01 23:34:25 [news] Meteor:
2016-11-11 03:35:47 [articles] Tata10:
2016-07-27 14:28:19 [articles] Сергей:
2016-05-17 09:56:26 [articles] юра:
2016-04-29 18:03:48 [articles] agatsky.dn:
Теги
Друзья
Блог малова Лучшие стихи зая =) Мед в Красноярске Daniil V. Savenkoff Blog | То, что мне когда-то пригодилось... Велкам в друзья!

Информация по IP. Геотаргетинг и IpGeoBase

Марта
2012 года
12
Теги: web, php,
Раздел: zgbox.ru -> Статьи -> Web -> Информация по IP. Геотаргетинг и IpGeoBase
Просмотров: 5231
В этой статье речь пойдет о том как использовать ipgeobase у себя на сайте.

С оффсайта:
Проект IpGeoBase создан как общедоступный ресурс географической привязки российских IP-адресов. Он включает в себя общедоступную бесплатную базу данных такой географической привязки и примеры программ, работающих с ней. База обновляется ежедневно и любой вебмастер может использовать ее для нужд географического таргетинга.

Иными словами это база IP адресов и их географического расположения. IP адреса связаны со странами которым они принадлежат, городами, регионами и даже координатами. Далее в статье изложено то как всем этим пользоваться через php и mysql



Зачем это нужно?


Пригодиться это может в разных целях. Например:
1. Нужно разрешить или запретить доступ к сайту для определенной страы\региона\города
2. Собирать статистику, откуда, с какого города приходят посетители на сайт.
3. Получить географическую информацию о посетителе
4. Выводить посетителям сайта разную информацию в зависимости от городов.
5. Можно защищаться от спам-ботов т.к. они любят долбиться на сайт через свои прокси сервера которые как правило находятся за пределами зоны RU, например US, PL, DE итд...

Использование IpGeoBase через php и mysql


Тут вариантов два, можно пользоваться базой напрямую с ipgeobase.ru а можно качать базу к себе, засовывать ее например в mysql и в нужный момент делать выборку.
У обоих методов свои приемущества и недостатки.

Приемущества первого метода в том, что нет необходимости перекачивать к себе базу, следить за ее свежестью и делать выборку силами своего сервера. Но недостатки в том, что данный метод не будет работать если вдруг не будет связи с сервером ipgeobase по тем или иным причинам.
Также, это увеличивает время загрузки страницы которая использует этот метод поскольку требуется определенное время на соединения с сервером ipgeobase и отдачу им информации после выборки.

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

Первый метод. Использование онлайн XML интерфейса IpGeoBase


Ipgeobase имеет xml интерфейс для доступа к базе. Суть его работы такова:
генерируем ссылку вида http://ipgeobase.ru:7020/geo?ip=1.2.3.4 где вместо 1.2.3.4 подставляем любой IP адрес, качаем содержимое по ссылке, и получаем данные в таком XML формате:
<ip-answer>
<ip value="46.250.14.23">
<inetnum>
46.250.0.0 - 46.250.31.255
</inetnum>
<country>
UA
</country>
<city>
Одесса
</city>
<region>
Одесская область
</region>
<district>
Восточная Украина
</district>
<lat>
46.466667
</lat>
<lng>
30.733334
</lng>
</ip>
</ip-answer>

Обрабатываем полученые данные и выводим в нужном месте.
Для этого был написан простой модуль zgeo.php, кстати вот он:

Файл zgeo.zip Модуль zgeo.php для получения информации об IP адресе с сайта ipgeobase.ru. Получает следующие данные: страна, регион, город, область, координаты. Размещен
размер 0.00 mb 2012-03-12 20:06:32
Скачан 344

Пример его использования достаточно прост:
листинг файла index.php
<?php
include('zgeo.php'); //подключаем модуль
$data=getipgeodata('46.250.14.23'); //получаем информациб об IP в переменную $data

//преобразуем кодировку для нашего сайта, из cp1251 в UTF-8 если нужно, если нет то удалите строку
$data = iconv('WINDOWS-1251', 'UTF-8', $data);

//выводим данные которые вытаскиваем функцией getval() модуля zgeo.php из переменной $data
echo getval('inetnum',$data).'</br>';
echo getval('city',$data).'</br>';
echo getval('country',$data).'</br>';
echo getval('region',$data).'</br>';
echo getval('district',$data).'</br>';
echo getval('lat',$data).'</br>';
echo getval('lng',$data).'</br>';

?>

Функция getipgeodata() как уже стало ясно - получает данные об IP адресе указанном у нее в параметре. Если выполнить ее без параметра, $data=getipgeodata(); то функция вытащит данные текущего ip адреса для которого выполняется скрипт.

Метод второй. Заливаем базу ipgeobase в mysql


Качаем скрипт-заливатор:

Файл zalivator.zip Скрипт на php для заливки текстовых баз ipgeobase в mysql Размещен
размер 0.00 mb 2012-03-12 20:37:57
Скачан 287

Распаковываем и закачиваем его на свой сайт.

Теперь нужно скачать файлы базы с сайта из Архива в частности "Архив, содержащий базу местонахождений российских (с точностью до города), украинских (с точностью до города) и европейских (с точностью до страны) ip-адресов."

Архив содержит два файла cidr_optim.txt и cities.txt
Их тоже заливаем на свой сайт в одну директорию со скриптом zalivator.php

Запускаем заливатор и видим такую страницу:

image

Внизу страницы видно

Файл cidr_optim.txt успешно обнаружен
Файл cities.txt успешно обнаружен

Это говорит о том что скрипт видит файлы базы и будет с ними работать, в противном случае тут будут красные надписи о том что файлов нет.

Заполняем все необходимые поля и жмем "Приступить"
Секунд 20 скрипт будет заливать данные, потом выдаст что все ок, или покажет что не так и после успешной заливки в качестве примера попытается показать вам инфо по вашему ip.
Если повторить попытку с уже залитой базой, то скрипт сначала удалит из mysql ранее созданные таблицы (ipgeolist и ipcities) после чего запишет данные заново.

Если вам не нужно преобразовывать кодировку файлов из cp1251 в UTF8, то удалите из скрипта все строки в которых встречается слово iconv

Комментарии к записи:
Балабол 2012-05-13 01:33:09 [ответить]
Ребята спасибо :) работает, я взял первый вариант где с сайта данные считываются =)
=ZG= IP:95.170.187.9 2012-05-13 22:14:36 [ответить]
Рад стараться! =)
Олег 2013-06-11 13:42:02 [ответить]
Спасибо, работает, еще вопрос, как сделать в вордпрессе, чтобы по городу подбирались записи автоматически? Скажем определился город:Москва и появилась ссылочка:предложения для Москвы. Нажав на нее должны выводиться все записи для этого города
=ZG= IP:10.20.1.60 2013-06-11 18:04:35 [ответить]
Это вопрос php программирования. На вашем сайте, в момент генерации страницы в php, (используя скрипт из этой статьи или собственную разработу) определяется город клинета сайта, и в зависимости от города, клиенту отдается соответствующая информация.
В общем писать на php, иного выхода не вижу, хотя может есть какие готовые штуки ipgeobase для wordpress

Добавление комментария

Ваше имя: (Антиспам) Какой сейчас год?
Ваш комментариий: