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

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

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

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

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

Ошибка, которая отображается в журнале ошибок: «PHP Fatal error: вызов неопределенного метода MaxMind \ Db \ Reader :: city () в <<< путь к benchmark.php >>>) ‘

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

2

Решение

Нет никаких 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.
6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]