Можно ли определить время пользователя по веб-запросу? - PullRequest
4 голосов
/ 03 февраля 2009

Можно ли на веб-сервере определить местное время и часовой пояс пользователей при отправке запроса?

Может ли это быть сделано с помощью JavaScript, чтобы захватить его и отправить обратно на сервер?

Моя компания хочет отслеживать, сколько пользователей используют наш сайт в нерабочее время (нет, я тоже не знаю, почему!)

Спасибо.

Ответы [ 6 ]

6 голосов
/ 03 февраля 2009

Вам нужно поместить клиентское время JavaScript в скрытое поле и предположить, что его часы установлены правильно.

myTime = new Date() >> Tue Feb 03 2009 12:24:28 GMT-0500 (Eastern Standard Time)
2 голосов
/ 03 февраля 2009

Вы должны рассмотреть обратное разрешение DNS существующих журналов веб-сервера. Затем вы можете использовать геокодирование, чтобы угадать часовой пояс пользователя (и его местное время относительно времени вашего веб-сервера).

Вам не нужно будет писать новый код JavaScript, писать пользовательский код на стороне сервера для регистрации времени пользователя, а затем развертывать обновленный веб-сайт.

Этот сценарий Perl может быть полезным примером: Скрипт Perl, который выполняет массовый обратный поиск DNS

2 голосов
/ 03 февраля 2009

Вы можете загрузить дату в скрытое поле, используя JavaScript:

var newDate = new Date();
hiddenFieldName.value = newDate.toLocaleString();

Затем при обратной передаче на сервер захватите это поле.

1 голос
/ 03 февраля 2009

Конечно, вы можете встроить производную JS клиентскую метку времени и отправить ее обратно, добавленную к другому запросу, но это совершенно ненадежно, поскольку пользователь может установить время своего клиента на что угодно, и для этого требуется второй запрос, который может быть немного оскорбительным или технически неудобно для обеспечения. Многие реализации будут делать это, запуская AJAX-запрос для текстового файла или добавляя на страницу одно пустое пиксельное изображение.

Вы можете попытаться получить аналогичную метрику на основе первых запросов и геолокации IP-местоположения и метки времени по Гринвичу, указывающих местное время, но это может быть дорого, если у вас еще нет базы данных IP / Geo:)

1 голос
/ 03 февраля 2009

JavaScript - действительно путь.

К счастью, в Интернете есть примеров кода, который вы можете использовать . Эта страница кажется довольно полной.

Следует отметить, что знание текущего смещения кого-либо равно , а не так же, как знание часового пояса, но этого, вероятно, достаточно для ваших целей:

0 голосов
/ 03 февраля 2009

Ну, вы можете прочитать местное время браузера с помощью JavaScript:

var now = new Date();

Затем вы можете отправить его на сервер, используя XmlHttpRequest или скрытое поле формы ...

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