Как создать функциональность GeoIP в проекте PHP? - PullRequest
3 голосов
/ 12 декабря 2010

У меня есть некоторый IP-адрес ($_SERVER['REMOTE_ADDR']), и я должен получить (выучить) название страны, и было бы неплохо, если бы я мог также получить (выучить) название города. И не забудьте, что это php-проект, полезный API - очень хорошо.

P.S. Это какой-то проект с открытым исходным кодом, и мы должны использовать только бесплатные инструменты с открытым исходным кодом.

Ответы [ 5 ]

4 голосов
/ 23 августа 2012

Нет (нужен только файл 'GeoIP.dat'). Чтобы скачать бесплатно GeoIP Standard Country базы данных, перейдите к http://maxmind.com/download/geoip/database/

Установить

Просто поместите файл 'geoip.inc' куда-нибудь в соответствии с директивой include_path файл 'php.ini' или просто поместите его в тот же каталог, что и ваши PHP-скрипты.

Использование

Получает название страны по имени хоста:

include("geoip.inc");

$gi = geoip_open("/usr/local/share/GeoIP/GeoIP.dat",GEOIP_STANDARD);

echo geoip_country_code_by_addr($gi, "24.24.24.24") . "\t" .
     geoip_country_name_by_addr($gi, "24.24.24.24") . "\n";
echo geoip_country_code_by_addr($gi, "80.24.24.24") . "\t" .
     geoip_country_name_by_addr($gi, "80.24.24.24") . "\n";

НТН.

2 голосов
/ 12 декабря 2010

Также вы можете посмотреть здесь: MaxMind GeoIP PHP API

1 голос
/ 29 июня 2015

Я решил использовать бесплатную базу данных от http://lite.ip2location.com/ Работает лучше, чем все остальные до сих пор.

1 голос
/ 12 декабря 2010

PHP имеет несколько полезных встроенных GeoIP-функций .Их должно быть достаточно:

$details = geoip_record_by_name($_SERVER['REMOTE_ADDR']);
echo $details['city'];
0 голосов
/ 20 ноября 2017

В среде Linux 1. sudo yum установите php56-devel geoip geoip-devel php-pear 2. sudo pecl установите geoip 3. extension = geoip.so (добавьте эту строку в php.ini) 4. Переместить файл .dat в папку / usr / share / GeoIP

В среде Windows 1. переместить .dll в папку ext 2. переместить файл .dat в папку apache / bin 3. добавитьрасширение dll в php.ini

...