Как создать функциональность GeoIP в проекте PHP?

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

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

Ответ 1

Нет (требуется только файл "GeoIP.dat" ). Чтобы скачать бесплатную стандартную страну GeoIP базы данных, перейдите к 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";

НТН.

Ответ 3

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

$details = geoip_record_by_name($_SERVER['REMOTE_ADDR']);
echo $details['city'];

Ответ 4

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

Ответ 5

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

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