не JavaScript таймер - PullRequest
       10

не JavaScript таймер

1 голос
/ 16 августа 2010

Эй, ребята, я делаю тест с ограничением, я хочу отслеживать оставшееся время с помощью чего-то другого, кроме javascript, потому что с помощью javascript пользователь может просто приостановить таймер, отключив javascript, и занять столько же временикак им нужно.и когда они закончат, они могут просто включить JS и отправить тест.Я использую Coldfusion, если это поможет, заранее спасибо.

Ответы [ 5 ]

5 голосов
/ 16 августа 2010

Использование JavaScript на клиенте и сессия переменные на стороне сервера

2 голосов
/ 16 августа 2010

Если вы используете сеанс, я бы регистрировал время, когда пользователь запросил страницу, и время, когда пользователь отправил тест. Я бы по-прежнему использовал Javascript для отображения оставшегося времени, но только для этого.

2 голосов
/ 16 августа 2010

Вы должны контролировать как пользователя, так и сервера. Javascript хорош для пользовательской стороны, чтобы дать им предупреждение, когда они близки к нехватке времени, но вы должны также проверить серверную часть, когда она отправлена. Я бы порекомендовал прикрепить скрытое поле в тесте, которое имеет временную метку времени, в которое тест был запущен, затем при отправке вы можете сравнить начальное время с представленным временем, чтобы убедиться, что они не превысили свое время. Никогда не полагайтесь только на проверку на стороне клиента.

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

0 голосов
/ 16 августа 2010

Один из подходов, предполагающий, что вы хотите, чтобы ваш сервер предпринял действия в случае, если они не ответили вовремя, состоит в том, чтобы создать отдельный поток с помощью cfthread, перевести его в спящий режим на длительность теста, и, если их ответы остались не было представлено, делай что угодно. Я представляю что-то вроде ..

  .. start of quiz stuff ..
  <cfthread action="run" name="quiztimer">
         <cfthread action="sleep" duration="120000" />
         <cfquery>fetch quiz results</cfquery>
         <cfif NoQuizAnswers>
                 <cfinsert>insert failure into quiz results</cfinsert>
         </cfif>
  </cfthread>
0 голосов
/ 16 августа 2010
var oReq = getXMLHttpRequest();


function getXMLHttpRequest() {
        if (window.XMLHttpRequest) {
            return new window.XMLHttpRequest;
        }
        else {
            try {
                return new ActiveXObject("MSXML2.XMLHTTP.3.0");
            }
            catch (ex) {
                return null;
            }
        }
    }

и обработайте это на стороне сервера, вызвав метод zx

function ZX(q, w, e, t) {


if (oReq != null) {
    oReq.open("GET", "XML.xml", true);
    oReq.onreadystatechange = function () {

       //work with response xml object


         alert(oReq.responseXML.getElementsByTagName("")[0].getAttribute("tag1"));
        if (oReq.readyState == 4 /* complete */) {
            if (oReq.status == 200) {
            }
        }
    };
    oReq.send();
}
else {
    window.alert("AJAX (XMLHTTP) not supported.");
}

}

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