Как определить часовой пояс
В предыдущей статье я рассказывал: как вывести время с учётом часового пояса пользователя. Ничего сложного там не было, однако, главная трудность - это определить смещение по времени. Поэтому в этой статье я расскажу, как определить часовой пояс пользователя.
Существует несколько методов, давайте их разберём:
- Определить по IP. Самый плохой способ, поскольку не всегда по IP можно определить даже страну, не говоря уже о городе. Вдобавок, нужно будет держать информацию о часовом поясе для каждого города мира.
- Попросить пользователя указать свой часовой пояс. Самый частоиспользуемый способ. Как правило, часовой пояс запрашивают при регистрации пользователя на сайте. А зная часовой пояс пользователя, можно без проблем узнать смещение относительно базового времени сервера, а дальше всё написано в предыдущей статье.
- Узнать через JavaScript. Самый оригинальный способ. В данном способе надо, используя объект Date, отправить на сервер информацию (как отправлять данные написано здесь) о текущем часе пользователя. Далее на сервере надо посчитать разницу между текущим часом базового времени на сервере и тем часом, что пришёл от пользователя. Далее сохранить в cookie или сессию это смещение. Вот и всё.
Почему работает 3-й способ? Всё потому, что JavaScript - это клиентский язык, который показывает время на компьютере пользователя, а не на сервере. Поэтому мы отправляем на сервер именно текущее время пользователя, в котором уже учтён часовой пояс. Ведь нам же нужен не часовой пояс, а всего лишь смещение.
Как видите, нет ничего невозможного, и определить часовой пояс пользователя не так уж и трудно, а уж узнать смещение по времени, а только оно обычно и требуется, вообще, легко.
-
- Михаил Русаков
Комментарии (3):
Здравствуйте, Михаил! Создайте пожалуйста статью как защитить сайт от взлома.
Ответить
http://myrusakov.ru/php-security.html
Ответить
Ошибо4ка: "Узнать через JavaScript. Самый оригинальный способ. В данном способе надо, используя объект Date, отправить на сервер информацию (как отправлять данные написано здесь) о текущем часе пользователя. Далее на сервере надо посчитать разницу между текущим часом базового времени на сервере и тем часом, что пришёл от пользователя. Далее сохранить в cookie или сессию это смещение. Вот и всё. Почему работает 3-й способ? Всё потому, что JavaScript - это клиентский язык, который показывает время на компьютере пользователя, а не на сервере. Поэтому мы отправляем на сервер именно текущее время пользователя, в котором уже учтён часовой пояс. Ведь нам же нужен не часовой пояс, а всего лишь смещение." Хоть JavaScript - это клиентский язык и определить таким образом разницу между текущим часом базового времени на сервере и тем часом, что пришёл от пользователя -- МОЖНА, но при одном условии что в юзверя время правильно установлено, а если нет то будет неточность и ДЫРКА во времени :) ... ----------------------------> C Уважением Владимир Кибалюк.
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.