gpt4 book ai didi

javascript - 如何使用计时器重定向用户

转载 作者:行者123 更新时间:2023-12-02 16:30:58 24 4
gpt4 key购买 nike

做一个测验,我想设定一个有限的时间来回答问题。

因此用户只需将他的答案放入表单中并进行验证即可。 Validate 将重定向到页面 process.php,该页面将检查所有内容。

如果用户没有及时回答,则会提交空表单。 (因为错误答案和空答案会产生相同的后果)

我知道有一些方法,可以使用元标记(html)或 header (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 function microtime() ,将其放入 session 中,并检查我的 process.php 计时器是否未更改。但我失败了。

  • 有没有简单的方法可以解决这个问题?
  • 如何真正保证应答时间并防止计时器更改?

最佳答案

  1. 绕过用户“欺骗”计时器的唯一方法是使计时器依赖于服务器时间。这意味着您必须让服务器传递一些数据。例如,每次用户开始回答问题时,设置一个 session 对象(或等效的东西),然后在用户完成回答时清除它。因此,当用户开始回答问题时,检查数据是否存在,并计算剩余时间。
  2. 如果您不希望计时器依赖于服务器,可以使该函数匿名。当函数是匿名的时,您可以获得一定程度的保密性。

.

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);
}();

关于javascript - 如何使用计时器重定向用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28300744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com