Как получить местоположение пользователя на основе его IP-адреса? - PullRequest
0 голосов
/ 30 ноября 2011

Для получения IP-адреса пользователя я использую:

$ip = $_SERVER['REMOTE_ADDR'];

У меня есть база геоданных со следующими таблицами:

blocks
locations
zipcodes
nations
dma_codes
states

Это таблица, в которой я заинтересован

блоки

start_ip | end_ip | location_id
-------------------------------

33996344 | 33996351 | 16373
50331648 | 67166463 | 223

etc...

Выше представлены только первые 2 записи из 1 866 401 строки в этой таблице. Я понятия не имею, что это за гео-база данных. Может, MaxMind, но не уверен. Я унаследовал этот проект от предыдущего разработчика клиента, который загрузил эту базу данных, но пока ничего с ней не делал. Поэтому у меня нет примеров кода.

Может кто-нибудь объяснить, как я могу получить location_id, если мой IP-адрес будет:

72.63.83.41

Также кто-нибудь может распознать эти имена таблиц, так что, пока я не смогу узнать, что это за geo db.

1 Ответ

2 голосов
/ 30 ноября 2011

IPv4-адреса - это просто 32-битные целые числа, и вы можете использовать MySQL для преобразования «строкового» IP-адреса в / из этих целых чисел через inet_ntoa() (число в ascii) и inet_aton() (как число в число).

SELECT location_id
FROM yourtable
WHERE INET_ATON('70.63.83.41') BETWEEN start_ip AND end_ip

даст вам любой соответствующий location_id для этого конкретного IP.

...