我有一个电子测试的演示网站,每个学生可以在整个考试中获得15分钟(包括5个科目,每个科目有10个问题)。我想要的是,当学生立即点击主页上的 START 时,倒数计时器应该自动启动并自动更新。实际上,这对于单个页面来说很容易完成。
问题是如果学生点击进入下一页,我希望计时器从上一页停止的位置开始并继续倒计时。
我想过使用SESSIONS但是如何让Javascript在PHP中设置SESSION变量?我的想法是使用AJAX,但我不知道如何去做。
任何人都可以帮助我,即使它需要AJAX以外的东西吗?
PS:
我想要显示的是剩余的秒数,而不是当前时间。
感谢。
答案 0 :(得分:2)
你不必知道它在另一页上的停止位置。
您只想知道点击用户的时间。
只需将其保存在数据库或文件中即可。
并且在每个请求上计算服务器上剩余的时间。
由于客户端可以轻松操作。
在服务器上计算剩余时间后,您可以在每个页面上使用javascript进行倒计时。
答案 1 :(得分:1)
我找到了一个简单的方法来做一个小搜索。 Here
PHP:
//when you start
$_SESSION['start_time'] = time();
然后在每一页上:
<script type="text/javascript">
var startTime = <?php echo $_SESSION['start_time']; ?>;
//calculate remaining time
</script>
答案 2 :(得分:0)
你可以使用这样的算法:
在这种情况下没有真正的“计时器” - 只是一个开始时间,以及检查自那时起15分钟后是否已经过去的逻辑。如果要向用户显示计时器,则数学将很简单。
答案 3 :(得分:0)
您可以将页面放在IFrame中,倒数计时器放在主页面上。
答案 4 :(得分:0)
简单地说,您存储学生第一次开始测试时的时间戳并将其输出到每个页面。然后,从该时间戳中减去当前时间以获得经过的时间是一件简单的事情。
但是,依赖于Javascript是确保此计时器启动的一种非常糟糕的方法。更好的方法是强制用户点击实际的链接/按钮,不涉及Javascript。你记录服务器上的时间戳然后命中,然后一切都很好。
start.php:
<a href="page1.php">Start Test - Page 1</a>
page1.php中:
<?php
if(!isset($_SESSION['test_start_timestamp')) {
$_SESSION['test_start_timestamp'] = time();
}
?>
<h3>Question #1</h3>
etc...
重要的是,一旦设置了会话,就永远不要重置会话中的时间戳值。否则,测试者只需点击一下,直到他们到达计数器重置的页面,他们就可以有更多的时间进行测试。