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