Подключение MaxMind GeoIP2 в PHP проект
Как установить geoip ридер, загрузить БД GeoLite2-Country.mmdb и определить страну пользователя по IP.
Установка ридера БД через компосер:
composer require geoip2/geoip2:~2.0
Загрузка БД GeoLite2-Country.mmdb:
curl http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz | gunzip > GeoLite2-Country.mmdb
Определение страны по IP:
require 'vendor/autoload.php';
// @see https://github.com/maxmind/GeoIP2-php
use GeoIp2\Database\Reader;
$reader = new Reader('./GeoLite2-Country.mmdb');
$record = $reader->country($_GET['ip']);
die($record->country->isoCode); // UA
Примечание
По желанию можно добавить команду обновления базы IP адресов в секцию scripts composer.json:
{
"require": {
"geoip2/geoip2": "~2.0"
},
"scripts": {
"geoip-update": [
"curl http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz | gunzip > GeoLite2-Country.mmdb"
]
}
}
И запускать обновление из composer:
composer run-script geoip-update
Также обратите внимание на GeoCoder PHP - https://github.com/geocoder-php/Geocoder. Хотя, он также использует базы maxmind.
#maxmind geoip2