Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Определение населённого пункта по IP
Медведь  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2482
Пользователь №: 37963
На форуме: 3 года, 3 месяца, 29 дней
Карма: 27




Есть некоторые мысли, но хочу понять в правильном направлении или нет.

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

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

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

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

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


--------------------

Заходил 29.09.2016
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8737
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 7 дней
Карма: 591




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

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

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

а вот тут следует задуматься, нужно ли хранить эту информацию на сервере? С какой целью?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Медведь  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2482
Пользователь №: 37963
На форуме: 3 года, 3 месяца, 29 дней
Карма: 27




Цитата (killer8080 @ 6.07.2016 - 21:57)
Цитата (Медведь @ 6.07.2016 - 18:33)
Хочу хранить эти данные в своей DB

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

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

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


--------------------

Заходил 29.09.2016
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sg.com  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Пользователь
Сообщений: 121
Пользователь №: 42899
На форуме: 7 месяцев, 11 дней
Карма: 3




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

Таким образом гео таблица будет наполнятся автономно.

Это сообщение отредактировал sg.com - 7.07.2016 - 20:37
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Медведь  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2482
Пользователь №: 37963
На форуме: 3 года, 3 месяца, 29 дней
Карма: 27




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


--------------------

Заходил 29.09.2016
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8737
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 7 дней
Карма: 591




Цитата (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 с сервера на этапе генерации контента, идея изначально плохая.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса