Сообщение от автора библиотеки от 7.05.2024. Библиотека функционировала и функционирует, статья не обновлялась с конца 2022 года, поскольку никаких изменений в библиотеке не происходило. Выявлена проблема при использовании библиотеки с 4-ой версии Joomla, она связана с переопределением механизма работы исключений в Joomla указанной версии, пока проблема не исправлена(проанализированы возможные альтернативные алгоритмы, пока не определился как именно реализовать алгоритм). С остальными CMS(Wordpress и Битрикс) библиотека работает корректно. Касаемо Битрикс, возможно использование библиотеки не является совсем стандартным. Из стандартных в начале мая 2024 уделил время изучению работы с MaxMind - с котороым проблемы при попытке зарегистрировать ключ из России, возможно у Вас так же не получится. Поэтому возможно имеест смысл использовать для Битрикс встроенный механизм работы с SupexGeo, с которым не понятно - обровляется ли он, базы которые удаётся скачать достаточно старые, касаемо API - надо бы выделить время и проверить актуальность баз, пока этот момент не выяснен. По итогу, по идее стандартным для битрикс возможно будет использование встроенного класса для работы с API SypexGeo, при этом про актуальность баз я пока не скажу. Моя библиотека так же будет работать, при этом я сейчас не скажу насколько её использование является стандартным подходом, скажу лишь что количество пользователей библиотеки растёт. Касаемо качества опредеелния, на момент 2022 года качество было сопоставимо с SyptexGeo и возможно чуть проигрывало библиотеке NetGeoPlugin, с того времени не проводил сравнения качества работы библиотек.
IpGeoBase давно не используется, у библиотеки собственный парсер для сбора и актуализации базы, при этом название оставил пока как есть.
На момент 1 декабря 2022 года API geo-серсив библиотеки обрабатывает более 1 милиона запросов ежедневно. Количество сайтов использующих библиотеку продолжает расти. Есть новые идеи по развитию библиотеки.
1 ноября 2021 года в библиотеку была добавлена возможность определения кода региона. Названия кодов применяются аналогичный библиотеке sypex geo. В массиве возвращаемых после запроса данных код региона доступен под ключом regioncode. Например для Ивановской области код региона RU-IVA.
Внимание! 20.08.2021 обнаружилось что сайт IpGeoBase стал выдавать заглушку доменного регистратора вместо сайта. Таким образом API поставляющее сведения для библиотеки было не доступно. Ранее я писал рекомендацию - временно воздержаться от использования библиотеки, а так же о планах переписать библиотеку и настроить её в собственной базой геоинформации, которую я начал собирать чуть более полу года назад. Так вот 28 сентября 2021 года я внёс необходимые изменения и теперь гео-библиотека работает с моей собственной базой. Я не планирую сворачивать библиотеку, наоборот есть планы по её развитию и обновлению функционала. Для этого требуется свободное время.
В целом эта статья несколько раз переписывалась по мере того как происходило обновление библиотеки, а так же возникали сложности в ей использовании, например когда сервер IpGeoBase был не доступен. Мне надо бы выделить время и комплексно заняться этой статьей, сейчас же в следующем листинге опубликую код новой библиотеки и приведу пример её использования. Важно! Библиотека будет работать только на сайтах с установленными CRM Joomla, Bitrix и Wordpress. Библиотека самостоятельно определяет одну из указанных CMS и использует её настройки для автоматического соединения с базой данных, в которой сохраняется кеш-geo определений. До текущего момента работа библиотеки без указанных CRM не реализована. Ещё мне можно написать ВКонтакте и рассчитывать на бесплатную помощь в установке библиотеки: https://vk.com/nikolaevevge
Код библиотеки от 1 ноября 2021 года.
Пример использования библиотеки
Далее идёт статья как она была до сентября, там много что бы уже нужно поправить
У сервиса IpGeoBase с 22 ноября 2019 по 25 ноября наблюдались проблемы - сервис висел. В результате чего определение IP адреса не работало и скрипт находящийся сейчас в втором листинге приводил к подвисанию ответа сайта примерно на 5 секунд. За несколько лет наблюдений за IpGeoBase это первое такое провисание. Тем не менее будет рассмотрен вариант использования какого либо аналогичного сервиса и скрипты будут доработаны для избежания зависаний на случай если проблемы у сервисов повторятся. Так же в листинге ниже представляю вариант определения geo встроенными классами Bitrix без использования IpGeoBase.
Внимание! 20.08.2021 обнаружилось что сайт IpGeoBase стал выдавать заглушку доменного регистратора вместо сайта. Таким образом API поставляющее сведения для библиотеки не доступно. Рекомендую временно воздержжаться от использования библиотеки, как появится свободное время у меня есть планы переписать библиотеку и настроить её в собственной базой геоинформации, которую я начал собирать чуть более полу года назад. Я не планирую сворачивать библиотеку, наоборот есть планы по её развитию и обновлению функционала. Для этого требуется свободное время.
Так же 25 ноября пробовал собрать свою базу из нескольких доступных в Интернет(использовал https://apps.db.ripe.net/db-web-ui/api/whois/search?abuse-contact=true&ignore404=true&managed-attributes=true&resource-holder=true&flags=B&offset=0&limit=20&query-string=88.85.172.134 и гео класс встроенный в Bitrix) столкнулся с ситуацией, что в разных базах может быть разная информация о стране IP адреса, так например для IP-адреса 55.55.12.16 SupexGeo в Bitrix считает что страна США, а ripe.net что США. Тем не менее то что получилось доступно по адресу https://blog.ivru.net/geo/?ip=88.85.172.134, не торопитесь использовать поскольку названия полей как и адрес этого API может быть изменён. На текущий момент это бета версия.
PHP скрипт определяет информацию по текущему IP адресу клиента выполняющего запрос к серверу PHP.
Есть ещё вот такой URL для получения информации о IP адресе в формате JSON http://ipinfo.io/185.252.144.107/geo (для указанного IP адреса информация определена не корректно, на самом деле этот IP адрес относится к Финляндии, арендуется Российским хостинг оператором)
Ещё есть API от 2ip.ua, но бесплатно по ним только 10 запросов в день, адреса api https://api.2ip.ua/provider.json?ip=88.85.172.134 и https://api.2ip.ua/geo.json?ip=88.85.172.134 на скрине ниже пример данных которые возвращают указанные API. Для IP адреса 88.85.172.134 информация о городе возвращена не совсем корректно. Область указана верно - Ивановская, а вот город, который указан как "Гаврилов Посад" - указан не верно. Откуда взята данная информация не понятно, например tracert показывает адрес pppoe-landeh-88-85-172-143.ivnet.ru, то есть якобы IP относится к городу Верхний Ландех, который так же находится в Ивановской области и эта информация так же не корректна. На самом деле IP адрес является статическим и относится к городу Фурманов(так же Ивановской области).
Ещё в репозитории REMI для CentOs 7 можно выполнив команду yum install php-pecl-geoip установить стандартную штуку для работы с GEO в PHP. По идее работать с ней можно например следующим образом: var_dump(geoip_record_by_name($_SERVER["REMOTE_ADDR"])); как именно пока не выяснил, поскольку кроме установки указанной библиотеки ещё требуется скачать базу данных с адресами, чего я пока не делал. Предположительно файл базы данных городов скачивается по ссылке https://dev.maxmind.com/geoip/geoip2/geolite2/