Для того чтобы определить локацию пользователя, нам понадобится его IP и база данных со списком IP адресов и привязанных к ней территориальных данных. Но так как пример с БД мы уже реализовывали раньше, в данной статье. То сегодня мы немного усложним нашу задачу, и будет взаимодействовать со сторонним сервисом по его API, получая в ответ всю интересующую нас информацию — временную зону, широту, долготу, страну и город.
TimeZone
В этой статье рассмотрим один из вариантов определения локации пользователя по его IP адресу. А именно, с использованием существующей базы регионов и присвоенным им IP адресов сети.
Существующих баз не мало. Но мне пришлось иметь дело с базой от сайта
Первое что нам понадобится, это скачать файл с БД. Они его предоставляют в формате CSV. И скачать его можно с этой страницы.
Импорт данных файла регионов и IP
Следуйте инструкции в описании, и вы сэкономите время. Т.к. я изначально решил попробовать импортировать данные через phpMyAdmin (используя импорт CSV). И это заняло гораздо больше времени консольный импорт.
читать полностью...
Для того что бы получить массив списка всех тайм зон с временной разницей по Гринвичу, используйте следующую функцию:
function get_time_timezones() { $zones_array = array(); $timestamp = time(); $default_timezone = date_default_timezone_get(); $timezone_list = timezone_identifiers_list(); foreach ($timezone_list as $zone) { date_default_timezone_set($zone); $zones_array[$zone] = date('P', $timestamp); } date_default_timezone_set($default_timezone); return $zones_array; }