Создание привлекательной формы. Определение страны

Создание привлекательной формы. Определение страны

От автора: В этом уроке мы с вами решим задачу по автоматическому определению страны пользователя, на основании его IP-адреса.

Геотаргетинг (определение местоположения) – это довольно распространенная задача для веба. Очень часто на мультиязычных сайтах на основе полученных данных о местоположении пользователя устанавливается язык той или иной страны, чтобы пользователю было удобно пользоваться сайтом. Нам нужно определить страну пользователя с тем, чтобы автоматически выбрать ее в выпадающем списке стран.

скачать исходникискачать урок

Для решения поставленной задачи нам потребуется база диапазонов IP-адресов, которые присвоены той или иной стране. Я воспользуюсь базой стран, которые предоставляет сервис maxmind.com. По данной ссылке можно скачать базу стран. Это будет файл CSV. В дополнительных материалах вы также найдете уже готовую базу в архиве, который достаточно импортировать на сервер.

По этой ссылке вы сможете прочесть о полученной базе и о работе с ней.

Итак, давайте начнем с алгоритма. В представленной базе уже имеется список стран. Соответственно, нам не нужен теперь в скрипте статичный массив стран, теперь этот массив мы можем получать динамически – из БД.

Далее нам нужно будет определить IP пользователя. В БД имеется 2 поля (start_ip и end_ip), в которых находятся граничные значения диапазона IP-адресов страны. Однако, IP-адрес – это строка. Мы легко можем сравнить одну строку с другой, но никак не получится узнать, находится ли какая-то строка в диапазоне двух других строк. Это логично, поскольку даже само определение «диапазон строк» выглядит не совсем определенно.

Именно поэтому в базе имеются еще 2 поля (start_ip_num и end_ip_num), в которых содержатся числовые представления соответствующих граничных IP-адресов диапазона. Дело в том, что любой IP-адрес можно привести к его числовому представлению. Сделать это можно средствами PHP – функция ip2long() или средствами SQL – функция INET_ATON().

После получения числового представления IP-адреса пользователя, нам достаточно выполнить SQL-запрос, который найден диапазон значений, соответствующий определенной стране. Таким образом, наш несложный скрипт будет выглядеть так (добавляем его после открытия сессии):

Осталось внести небольшую правку в цикл вывода стран:

Вот, собственно, и все. На этом наш урок завершен. До новых встреч!

Метки: , ,

Похожие статьи:

Комментарии Вконтакте:

Комментарии (10)