我正在用PHP编写一个web应用程序,让用户参加模拟考试(多选题)。
考试是定时的,例如30分钟。我不确定跟踪用户完成考试的最佳方法是什么。每个问题都是从MySQL数据库中提取的,并作为新页面提供给用户。
我应该用Javascript(例如setInterval)在第一页启动计时器,然后在检索下一页之前,每当提交问题时将其POST到服务器吗?有没有一种更优雅或更有效的方法可以做到这一点?
假设他们有30分钟的时间进行整个测试,并且没有休息时间,我会在他们单击开始时存储一个时间戳。
$_SESSION['start_time'] = time(true);
然后,当它们出现在页面上时,您可以通过ajax进行轮询,也可以通过setInterval()
设置运行倒计时的javascript变量
<script>
var elapsedTime = <?=time(true) - $_SESSION['start_time'] ?>`;
var timer = setTimeout(function () {
if (elapsedTime > 30 * 6) {
clearInterval(timer);
alert('game over');
}
elapsedTime += 1;
}, 1000);
创建一个表,存储测试到用户的关联,并在测试不再有效时在其中放置一个时间。这将允许查询和了解学生的剩余时间,并在不允许的情况下阻止人们重新尝试测试。
我会将开始时间存储在cookie中,到期时间设置为30*60 secs
。
请参阅php.net