Intereting Posts
Безопасная связь PHP (phpseclib) и C # (Unity 3D) Почему мой тайм-аут сеанса Netbeans Xdebug после периода бездействия PHP exec – проверьте, включено ли или отключено Как изменить исходный код php и перекомпилировать его? PHP. Может ли кто-нибудь объяснить функцию pfsockopen для меня? (постоянный сокет) как присоединиться к двум таблицам по общим атрибутам в mysql и php? Рекомендация для процедуры разбивки на страницы AJAX PHP Использовать регулярные выражения для проверки паролей Срок действия кеша на статических изображениях APC демонстрирует 100% фрагментацию Экземпляр как свойство статического класса PHP Laravel: соединение не может быть выполнено, потому что целевая машина активно отказалась от него Как добавить контакт в список, используя (Отправить сетку) php api Самая длинная общая подстрока с неправильной переносимостью символов Попытка поиска перемотки вперед в Preg_Match

GEOIP и получение IP-адреса компьютера?

Я хочу, чтобы мой сайт мог найти местоположение компьютеров, поэтому, если кто-то обращается к моему сайту из Лондона или Манчестера и т. Д., И чтобы пользователи из определенной области отображались в зависимости от местоположения своих компьютеров. вроде онлайн-сайта знакомств, который предлагает пользователям в вашем регионе.

Я смотрел эту базу данных GEOIP, в которой перечислены все города по всему миру. Но я не знаю, что делать дальше? Нужно ли мне искать скрипты ip-адресов, которые извлекают и сравнивают информацию из базы данных GEOip?

Пожалуйста, может кто-нибудь указать мне в правильном направлении. Благодарю.

База данных GeoIP от: http://dev.maxmind.com/geoip/geolite

Solutions Collecting From Web of "GEOIP и получение IP-адреса компьютера?"

Попробуйте приведенный ниже код.

$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. Если вы этого не сделаете, вы можете просто установить его самостоятельно.

Если вам нужно что-то более конкретное, чем страна, вам придется заплатить, чтобы получить БД, но функции все еще существуют.