[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Определение населённого пункта по IP
Миша
Есть некоторые мысли, но хочу понять в правильном направлении или нет.

Допустим есть мой сайт, мне нужно постоянно определять местоположение пользователя, в первый раз пользователю появляется всплывающее окно с просьбой подтвердить населённый пункт, после чего запоминается в печеньки.

Сейчас я определяю населённый пункт пользователя сторонним сервисом, но у них есть лимиты и они в общем то могут в любой момент закрыть свой проект. И никто не отменял времени ожидания от их сервера.

Хочу хранить эти данные в своей DB, в связи с чем стоит вопрос правильного хранения [ IP - Населённый пункт ], используя MySQLi.

P.S. например разные пользователи три раза подтвердили, что IP находится в их городе, тогда делаю запись в основную таблицу. А если в основной таблице нет такого IP, то дёргаю со стороннего сервиса.

Ну и опять как хранить IP чтобы снизить нагрузку.

_____________
Принимаю заказы, писать в ЛС
killer8080
Привязка IP к местности штука весьма условная и корректно работает далеко не всегда, об этом нужно помнить.
Цитата (Медведь @ 6.07.2016 - 18:33)
Допустим есть мой сайт, мне нужно постоянно определять местоположение пользователя, в первый раз пользователю появляется всплывающее окно с просьбой подтвердить населённый пункт, после чего запоминается в печеньки.

ход мыслей правильный
Цитата (Медведь @ 6.07.2016 - 18:33)
Сейчас я определяю населённый пункт пользователя сторонним сервисом, но у них есть лимиты и они в общем то могут в любой момент закрыть свой проект. И никто не отменял времени ожидания от их сервера.

эту задачу можно переложить с сервера на клиент
http://dev.maxmind.com/geoip/legacy/javascript/
Цитата (Медведь @ 6.07.2016 - 18:33)
Хочу хранить эти данные в своей DB

а вот тут следует задуматься, нужно ли хранить эту информацию на сервере? С какой целью?
Миша
Цитата (killer8080 @ 6.07.2016 - 21:57)
Цитата (Медведь @ 6.07.2016 - 18:33)
Хочу хранить эти данные в своей DB

а вот тут следует задуматься, нужно ли хранить эту информацию на сервере? С какой целью?

Если это не создаст большой нагрузки, почему бы и нет. Доверять сторонним ресурсам не стоит, да и время отдачи страницы пользователю увеличивается (пока мой сервер отправит и получит ответ, и не факт что получит, если тот сервер будет не доступен или у меня будет превышен лимит запросов)

А так создать свою базу, пользователи в основном будут одни, поэтому необходимость делать запросы к стороннему ресурсу пропадает, а надёжность увеличивается.

_____________
Принимаю заказы, писать в ЛС
sg.com
ip2long();
long2ip();
. Иметь свою гео базу для своих клиентов вполне можно. Можно сделать накопительную базу, то есть сегодня она пустая, завтра добавится новый пользователь и в момент установки своего региона, пользователь выбирая этот регион, как раз и добавить свой ip в соответствии с регионом в эту базу (это можно делать без всплывающего окна, а как бы без ведома пользователя, зачем ему лишняя инфа). Ну а при появлении нового пользователя, выдавать ему до установки собственных гео данных что-то нейтральное.

Таким образом гео таблица будет наполнятся автономно.
Миша
sg.com ip2long вроде работает только с IPv4, а вообще твой вариант мне понравился. Например при регистрации подставляем предположительно населённый пункт (дёргая с стороннего сервиса), после чего записываем в временную таблицу, после определённого количества совпадений перезаписываем в основную. И для авторизированных пользователей используем данные указанные при регистрации.

_____________
Принимаю заказы, писать в ЛС
killer8080
Цитата (sg.com @ 7.07.2016 - 20:35)
ip2long();
long2ip();

MySQL для этого имеет свой функционал
Цитата (Медведь @ 7.07.2016 - 21:05)
sg.com ip2long вроде работает только с IPv4

мускул начиная с версии 5.6 поддерживает IPv6
INET6_ATON для хранения используй VARBINARY(16)

Цитата (Медведь @ 7.07.2016 - 19:38)
Если это не создаст большой нагрузки, почему бы и нет. Доверять сторонним ресурсам не стоит,

как будто есть другой способ, ты в любом случае запрашиваешь гео айпи у "стороннего ресурса" wink.gif

Цитата (Медведь @ 7.07.2016 - 19:38)
да и время отдачи страницы пользователю увеличивается (пока мой сервер отправит и получит ответ, и не факт что получит, если тот сервер будет не доступен или у меня будет превышен лимит запросов)

этого я и не предлагал, как раз наоборот
Цитата (killer8080 @ 6.07.2016 - 21:57)
эту задачу можно переложить с сервера на клиент

гео данные хранить в куках. При первом заходе выводить общую страницу, без гео зависимых данных. Пользователю предлагать самому выбрать свою местность, а для удобства предлагать вариант авто определения
Цитата (killer8080 @ 6.07.2016 - 21:57)
http://dev.maxmind.com/geoip/legacy/javascript/

При этом у тебя нет никаких лимитов, геолокацию запрашивает клиент, а не сервер.
Потом если это нужно для зареганных юзеров, просто сохраняешь гео данные в их профиле и не нужно парится с geoip.
А запрашивать geoip с сервера на этапе генерации контента, идея изначально плохая.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.