Я хочу, чтобы мой сайт мог найти местоположение компьютеров, поэтому, если кто-то обращается к моему сайту из Лондона или Манчестера и т. Д., И чтобы пользователи из определенной области отображались в зависимости от местоположения своих компьютеров. вроде онлайн-сайта знакомств, который предлагает пользователям в вашем регионе.
Я смотрел эту базу данных GEOIP, в которой перечислены все города по всему миру. Но я не знаю, что делать дальше? Нужно ли мне искать скрипты ip-адресов, которые извлекают и сравнивают информацию из базы данных GEOip?
Пожалуйста, может кто-нибудь указать мне в правильном направлении. Благодарю.
База данных GeoIP от: http://dev.maxmind.com/geoip/geolite
Попробуйте приведенный ниже код.
$ip = $_SERVER['REMOTE_ADDR']; echo $location = file_get_contents("http://api.hostip.info/country.php?ip=$ip");
Не пытайтесь использовать это в своем локальном хосте. Он предоставит ip 127.0.0.1.
echo $location= file_get_contents("http://api.hostip.info/country.php?ip=12.215.42.19"); //outputs US
Это зависит от ваших потребностей. Я бы предложил вам использовать веб-службу, поэтому вам не нужно беспокоиться о размещении базы данных и ее сохранении самостоятельно. Все, что вам нужно сделать, это разобрать IP-адрес вашего посетителя и получить результат мгновенно. Я использую веб-службу IP2location с этого сайта .
PHP имеет встроенные функции для GeoIP
Библиотека GeoIP
Эта функция может быть особенно полезна, так как она возвращает материк, страну, город и т. Д. В массив.
geoip_record_by_name
Используйте $_SERVER['REMOTE_ADDR']
как ваш ip.
$record = geoip_record_by_name( $_SERVER['REMOTE_ADDR']);
Я использовал это в PHP на моем сайте. Очень быстро и легко усваивается (xml и т. Д.): http://www.geoplugin.com/
Обратите внимание, что эта база данных: In our recent tests, the GeoIP databases tested at 99.8% accurate on a country level, 90% accurate on a state level in the US, and 83% accurate for cities in the US within a 40 kilometer radius.
Я бы посмотрел на что-то вроде: библиотеки PEAR GeoLite
Быстрый фрагмент использования этой библиотеки в php:
$geoip = Net_GeoIP::getInstance(dirname(__FILE__) . '/data/GeoLiteCity.dat'); $ipaddress = '72.30.2.43'; // Yahoo! $location = $geoip->lookupLocation($ipaddress); var_dump($location);
На выходе будет показано, что-то похожее:
object(Net_GeoIP_Location)[2] protected 'aData' => array 'countryCode' => string 'US' (length=2) 'countryCode3' => string 'USA' (length=3) 'countryName' => string 'United States' (length=13) 'region' => string 'CA' (length=2) 'city' => string 'Sunnyvale' (length=9) 'postalCode' => string '94089' (length=5) 'latitude' => float 37.4249 'longitude' => float -122.0074 'areaCode' => int 408 'dmaCode' => float 807
Вероятно, у вас уже установлен GEOIP в качестве расширения PECL. Если вы этого не сделаете, вы можете просто установить его самостоятельно.
Если вам нужно что-то более конкретное, чем страна, вам придется заплатить, чтобы получить БД, но функции все еще существуют.