我们正在构建一个包含单独定时问题的在线测试。问题是用户必须在预定的秒数内完成的一系列表格。虽然用户会在每个问题上看到一个javascript滴答时钟,但是时间限制的实际强制必须在服务器端发生(否则用户很容易禁用/修改时间限制) 。但是,我们担心网络延迟会对接近时限结束时提交答案的用户造成不公平的惩罚,足以使延迟时间足以在超出时限的情况下做出响应。
当我们在服务器上收到答案时检查持续时间时,草率的解决方案似乎只是允许几秒钟的“宽限期”,但这有点蹩脚。 是否有一种安全的方法可以准确确定用户何时点击“提交”。
如果重要,网络应用程序是用PHP编写的。
答案 0 :(得分:2)
我以前实际上不得不处理这个问题。我们最终做的是标记页面请求的时间,并使用浏览器中的javascript ajax请求(加载时)来确定往返时间。它的平均值最终代表了它们的网络延迟/计算机速度,非常好。
显然,如果它超过15-20秒,你会遇到更大的问题,但我们看到的最多只有3-4秒。
然后,您可以在“公平”评估中使用它来确定实际花费的时间。