Как создать функциональность 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";
НТН.
Ответ 2
Также вы можете посмотреть здесь: MaxMind GeoIP PHP API
Ответ 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