2013-12-17 3 views
0

Мне нужен небольшой учебник, как определить город или страну IP. Я слышал, что MaxMind GeoIp был для этого полезен. Любая помощь?определить страну и город (PHP, GeoIP Maxmind)

+0

вы должны добавить geoip_close ($ gi); в конце или вы получите fseek(): 4 не является допустимым сообщением об ошибке ресурса потока –

ответ

1

Для получения информации о городе вам необходимо загрузить и использовать файл GeoLiteCity.dat.

1

для справки код должен выглядеть следующим образом первой загрузкой класс PHP пакет http://www.maxmind.com/download/geoip/api/php/php-1.11.tar.gz вы будете нуждаться в этом файлы

geoip.inc 
geoipcity.inc 
geoipregionvars.php 

положить их в том же каталоге ваш код, чтобы получить город и другую информацию этой

<?php 
include("geoipcity.inc"); 
include("geoipregionvars.php"); 
$ip = "144.3.87.197"; 
$gi = geoip_open("GeoLiteCity.dat",GEOIP_STANDARD); 
$record= geoip_record_by_addr($gi,$ip); 
echo 'City Name'.$record->city . "\n"; 
geoip_close($gi); 
?> 
7

=== Метод 1: Использование онлайн-сервисов ==


- http://www.geoplugin.net/php.gp?ip=123.123.123.123
- http://ip-api.com/php/123.123.123.123
- http://ipinfo.io/123.123.123.123
- http://api.codehelper.io/ips/?callback=codehelper_ip_callback&ip=123.123.123.123
.... и т.д ...

=== Метод 2: Использование Maxmind GeoIP_V2 ==

Как я это сделал : предположим, создайте папку с именем «My_Folder» и внутри нее:

1) создать папку GeoIp2 и вставьте в него содержимое этой папки «SRC» (download).
2) положить MaxMind папка (download, из папки «SRC»).
3) место, то есть GeoLite2-Country.mmdb (download).

затем, в My_Folder создать example.php файл и поместить этот код:

$user_ip='123.123.123.123'; 

spl_autoload_register('func888'); function func888($class){ include_once(str_replace(array('/','\\'), DIRECTORY_SEPARATOR, dirname(__file__)."/$class.php")) ;} 
use GeoIp2\Database\Reader; 
//you can do it for "city" too.. just everywhere change phrase "country" with "city". 
try{ 
    $reader = new Reader(dirname(__file__)."/GeoLite2-Country.mmdb"); 
    $record = $reader->country($user_ip); 
    $reader->close(); 
    $country_name = $record->raw['country']['names']['en']; 
} catch (GeoIp2\Exception\AddressNotFoundException $e){ $country_name = 'not_found'; } 

echo $country_name; 
// RESULTS -------------- > China 

P.S. другие примеры, найденные по адресу: https://github.com/maxmind/GeoIP2-php

+0

Спасибо, это работает для меня :) –

+0

BTW, Maxmind - это папка в My_Folder, а также GeoIp2, а файл базы данных - это места в одном и том же также. Для тех, кто разбирается в этом. – Brana

+0

вы также можете добавить http://api.ipinfodb.com/v3/ip-city/?key=&ip= к методу 1 – user5155835

Смежные вопросы