Недавно мне пришлось иметь дело с программой для ведения статистики кликов некой системы обмена объявлений. При щелчке как обычно собиралась информация о клике (на какой странице произошло, во сколько, браузер, ИН объявления и IP). В представлении статистики состояла задача — узнать город из которого произошел переход. Раньше я этим не интересовался особо поэтому только сечас у меня началось более глубокое знакомство с GeoIP системами.
Кроме того как это удалось
Сперва я вспомнил о всяких там geoip таблицах, которых сейчас можно найтибез особых затруднений сложнее чем раньше. Но сокращенные варианты лежат на сайтах-собирателях баз. Ниже один из них
сокращенная база
maxmind.com — сам сайт. там же можно и проверить geoip базу.
Вариант в моем случае отпал — пришлось бы весь список, а он не маленький и делать выборки из таблиц. а через некоторое вермя надо будет обновлять таблицу. вобщем лень заставила меня искать другие пути. пока искал нашел интересный сервис http://geoiptool.com/ который выполняет стандартную операцию любого geoip сервиса, но еще и накладывает на гуглокарту.

Очень забавно. Хабр — тут
В итоге я нашел http://www.ip2city.ru/ — открытую базу IP адресов. На нем я и остановился. Что же выделило его среди других сервисов, так это возможности предоставления данных вида
field1=value1
field2=value2
…
что вызывается простым get запросом www.ip2city.ru/ip2city.php?ip=ххх.ххх.ххх.ххх
а такие данные достаточно легко принимаются со сторонних серверов и парсятся
$IP = «00.00.00.00»; // или ай-пи откуда угодно (в моем случае из БД)
$lines = file('http://www.ip2city.ru/ip2city.php?ip='.$IP);
$city = trim(str_replace('=','',strstr($lines['0'],'=')));
$country = trim(str_replace('=','',strstr($lines['4'],'=')));
Естественно при такой работе PHP будет долго рисовать страницу, пока не примет все данные с сервера (сам парсинг проходит быстро), так что я бы рекомендовал операцию IP -> город производить после загрузки страницы.
Это мой первый топик, заранее прощу прощения за ошибки. Надеюсь кому-нибудь пригодится
Кроме того как это удалось
Сперва я вспомнил о всяких там geoip таблицах, которых сейчас можно найти
сокращенная база
maxmind.com — сам сайт. там же можно и проверить geoip базу.
Вариант в моем случае отпал — пришлось бы весь список, а он не маленький и делать выборки из таблиц. а через некоторое вермя надо будет обновлять таблицу. вобщем лень заставила меня искать другие пути. пока искал нашел интересный сервис http://geoiptool.com/ который выполняет стандартную операцию любого geoip сервиса, но еще и накладывает на гуглокарту.
Очень забавно. Хабр — тут
В итоге я нашел http://www.ip2city.ru/ — открытую базу IP адресов. На нем я и остановился. Что же выделило его среди других сервисов, так это возможности предоставления данных вида
field1=value1
field2=value2
…
что вызывается простым get запросом www.ip2city.ru/ip2city.php?ip=ххх.ххх.ххх.ххх
а такие данные достаточно легко принимаются со сторонних серверов и парсятся
$IP = «00.00.00.00»; // или ай-пи откуда угодно (в моем случае из БД)
$lines = file('http://www.ip2city.ru/ip2city.php?ip='.$IP);
$city = trim(str_replace('=','',strstr($lines['0'],'=')));
$country = trim(str_replace('=','',strstr($lines['4'],'=')));
Естественно при такой работе PHP будет долго рисовать страницу, пока не примет все данные с сервера (сам парсинг проходит быстро), так что я бы рекомендовал операцию IP -> город производить после загрузки страницы.
Это мой первый топик, заранее прощу прощения за ошибки. Надеюсь кому-нибудь пригодится