Подключение MaxMind GeoIP2 в PHP проект

Категория: 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

категория: PHP