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