Ссылка на вызов для страны в GeoLite2 с использованием PHP


Я пытаюсь использовать бесплатный код MaxMind GeoLite2, чтобы определить страну определенного IP-адреса.

Я использую метод без композитора, который был опубликован здесь: Получите локализованное название города пользователей через Maxmind GeoLite2 бесплатно

Я уверен, что это невероятно просто, но я не могу понять, как на самом деле передать IP-адрес и вернуть его в страну.

После строки $reader = new Reader... у меня есть $place = $reader->country('##.###.##.###'); (где # - это фактические номера IP-адресов) и это не работает. Я попытался заменить "страну" на "город", и это тоже не сработало. Я уверен, что это что-то простое, я просто не уверен, какие параметры мне нужно использовать, чтобы вернуть страну.

Ошибка, которая отображается в журнале ошибок, - это "Неустранимая ошибка PHP: Вызов неопределенного метода MaxMind\Db\Reader::city() в <<<пути к benchmark.php >>>)'

Любые идеи/предложения будут с благодарностью приняты.

Author: Community, 2014-10-05

1 answers

В файлах, которые вы включаете, нет функций city() или country() (на основе ответа, на который вы ссылались). Вместо этого вы должны использовать get() для получения географической информации IP, например:

require_once __DIR__ . '/' . 'Db/Reader.php';
require_once __DIR__ . '/' . 'Db/Reader/Decoder.php';
require_once __DIR__ . '/' . 'Db/Reader/InvalidDatabaseException.php';
require_once __DIR__ . '/' . 'Db/Reader/Metadata.php';
require_once __DIR__ . '/' . 'Db/Reader/Util.php';     // new 2014/09
use MaxMind\Db\Reader;
$mmdb= 'GeoLite2-Country.mmdb';
$reader = new Reader( __DIR__  . '/' . $mmdb );
$ipData = $reader->get('##.###.##.###');
echo $ipData['country']['names']['en'];

Где вы заменяете ##.###.##.### на IP, для которого хотите получить информацию. Очевидно, для этого требуется, чтобы у вас были все необходимые файлы кода и GeoLite2-Country.mmdb

Таким образом, полные шаги будут следующими:

  1. Загрузите MaxMind-DB-Reader-php с https://github.com/maxmind/MaxMind-DB-Reader-php
  2. Скопируйте папку Db, найденную в src/MaxMind, в каталог с файлом, содержащим приведенный выше код.
  3. Загрузите базу данных GeoLite2 Country MaxMind из http://dev.maxmind.com/geoip/geoip2/geolite2 /
  4. Распакуйте загруженный gzip и скопируйте файл GeoLite2-Country.mmdb в тот же каталог, что и файл, содержащий приведенный выше код.
  5. Теперь вы должны быть в состоянии выполнить приведенный выше код! Просто убедитесь, что вы заменили ##.###.##.### с реальным IP.
 5
Author: AlliterativeAlice, 2014-10-07 20:29:23