Ми}{@лbI4

Блог хеллоуворлдщика

Получение информации о местоположении по IP адресу для Yii2

25.06.2015 yii2, ip, geo

ВНИМАНИЕ

Автор не рекомендует использовать данное расширение, где необходима скорость обработки, потому что иногда от Telize ответа не дождаться. Поэтому, рекомендую использовать MaxMind GeoIP2, который так же использует Telize.

Очень много сервисов я перековырял перед тем, как остановил свой выбор на Telize. Данный сервис позволяет получить ГЕО информацию по IP адресу через их API в формате JSON. Полученная информация более-менее точная и данный сервис бесплатный. Поэтому, я решил, что лучше уже не найти и взялся за написание компонента для Yii2.

Компонент получилось очень простой. И да, подобное расширение уже было на GitHub, но меня оно вовсе не устроило из-за неправильного подхода к коду. И только поэтому я написал новое.

Использовать данный компонент очень просто. Для того, чтобы получить информацию по вашему IP адресу, нужно сделать следующее:

Yii::$app->geoIp->info;

по определенному IP адресу:

Yii::$app->geoIp->getInfo('255.255.255.255');

Так же, данный сервис поддерживает IPv6 помимо IPv4, что очень радует.

В компоненте есть такое свойства, как $externalIp, и в случае, когда оно установлено в true и не указан IP адрес в getInfo - этот IP адрес будет получен через API Telize, а не через встроенный метод в Yii2, возвращающий IP адрес посетителя. Это полезно, когда вы ведёте разработку на локальном веб-сервере и ваш IP адрес 127.0.0.1, по которому вы результатов не получите от Telize, поэтому IP адрес будет получен через API.


Страница на GitHub с расширением: https://github.com/bupy7/yii2-telize