2010-11-18 3 views
0

Я хочу разработать сайт викторины с использованием MVC 2. На одной странице будет отображаться только один вопрос. Экзаменатор выберет или введите ответ и нажмите кнопку «Далее», чтобы продолжить.Как рассчитать время, прошедшее между двумя последовательными запросами?

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

Каков наилучший способ справиться с этим?

ответ

1

Ну, я бы на самом деле не записывал прошедшее время - я бы сам записывал время (в UTC). Вы можете очень легко перейти от этого к времени между страницами, но вы не можете пойти другим путем. Возможно, вам будет полезно узнать позже о некоторых конкретных сеансах фильтрации, когда они произойдут (например, если кто-то утверждает, что у него была проблема в определенное время, вы можете проверить, действительно ли они были в системе).

Все, что вам нужно - это своего рода идентификатор сеанса/пользователя, чтобы отслеживать сеанс пользователя, и вы можете просто записать текущее время. Сроки будут такими же, как и тамперные, как системные часы сервера и сама база данных.

0

Зарезервируйте время и сохраните его на Сессии. Таким образом, нет никакого способа для любых средств подделки данных Клиента.

1

Вы можете использовать состояние сеанса на сервере. Тем не менее, вам нужно будет подумать, что произойдет, если пользователь откроет несколько вкладок/браузеров и т. Д.

В качестве альтернативы вы можете отправить закодированные временные метки клиенту. Поскольку они закодированы, клиенты не смогут их модифицировать.

+0

Пользователь также может просто удалить файл cookie сеанса (намеренно или непреднамеренно), что бы сбросить счет диагностики. – Levi

+0

@Levi, поэтому кодированная временная метка, обращенная к клиенту, вероятно, лучше всего и поддерживает несколько вкладок/сеансов для каждого пользователя. – marcind

+0

Если сценарий «не должен быть подделан никакими средствами», на самом деле не стоит доверять клиенту этим. Клиент может делать любое количество вещей, например, пытаться подделать новое значение, переиграть старое значение или просто разорвать контракт (отправив форму без этого поля). – Levi

Смежные вопросы