Для того чтобы определить локацию пользователя, нам понадобится его IP и база данных со списком IP адресов и привязанных к ней территориальных данных. Но так как пример с БД мы уже реализовывали раньше, в данной статье. То сегодня мы немного усложним нашу задачу, и будет взаимодействовать со сторонним сервисом по его API, получая в ответ всю интересующую нас информацию — временную зону, широту, долготу, страну и город.
IP
В данной статье рассмотрим одну из распространенных задач в программировании на PHP. А именно, как в php определить ip пользователя.
Если я работаю не с фреймворком (к примеру таким как Yii), то использую одно из готовых решений в виде следующей функции:
function user_ip() { if(getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown")) { return getenv("HTTP_CLIENT_IP"); } else if(getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) { return getenv("HTTP_X_FORWARDED_FOR"); } else if(getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) { return getenv("REMOTE_ADDR"); } else if(!empty($_SERVER['REMOTE_ADDR']) && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) { return $_SERVER['REMOTE_ADDR']; } return NULL; }
В этой статье рассмотрим один из вариантов определения локации пользователя по его IP адресу. А именно, с использованием существующей базы регионов и присвоенным им IP адресов сети.
Существующих баз не мало. Но мне пришлось иметь дело с базой от сайта
Первое что нам понадобится, это скачать файл с БД. Они его предоставляют в формате CSV. И скачать его можно с этой страницы.
Импорт данных файла регионов и IP
Следуйте инструкции в описании, и вы сэкономите время. Т.к. я изначально решил попробовать импортировать данные через phpMyAdmin (используя импорт CSV). И это заняло гораздо больше времени консольный импорт.
читать полностью...