Выполняя викторину, я хотел бы задать ограниченное время для ответа на вопросы.
Поэтому пользователю просто нужно поставить свой ответ в форме и проверить. Validate будет перенаправляться на страницу process.php, которая будет проверять все.
Если пользователь не отвечает вовремя, он будет путать пустую форму. (потому что ложный ответ и пустой ответ получили такие же последствия)
Я знаю, что есть какой-то способ: метатег (html) или заголовок (php), но это не совсем то, что я ищу, причина настройки кода или соображения безопасности.
На самом деле, я получил этот код.
<p>You will be redirected in <span id="counter">10</span> second(s).</p>
<script type="text/javascript">
function countdown() {
var i = document.getElementById('counter');
if (parseInt(i.innerHTML)<=0) {
location.href = 'process.php';
}
i.innerHTML = parseInt(i.innerHTML)-1;
}
setInterval(function(){ countdown(); },1000);
</script>
Но это не то, что я ищу, потому что пользователь может легко изменить таймер, чтобы установить большее значение.
Я также посмотрел PHP функцию microtime(), чтобы поместить ее в сеанс и проверить мой process.php, если таймер не изменился. Но я потерпел неудачу.
,
function(){
var a = setInterval(function(){
i = document.getElementById('counter');
if (parseInt(i.innerHTML)<=0) {
clearInterval(a);
document.getElementById('formName').submit();
}
i.innerHTML = parseInt(i.innerHTML, 10) - 1;
},1000);
}();
Вы можете использовать JQuery, чтобы просто отправить форму, когда обратный отсчет закончится следующим образом:
// When DOM is fully loaded
$(function() {
var countDown = 5000;
// Will occur after "countDown" / 1000 seconds
setTimeout(function() {
$("#theQuizzForm").submit();
},
countDown
);
});
Предполагая, что ваша form
имеет следующий вид:
<form method = "whatever" action="process.php">
<!-- html elements -->
</form>
Использование setTimeout
отправит форму после countDown/1000 секунд, которая составляет 5 секунд.
<meta http-equiv="refresh" content="10;url=http://www.google.com/" />
, чтобы перенаправить через 10 секунд ..