Php 跨多个页面的倒计时变量
我有一个电子考试的演示网站,每个学生在整个考试中有15分钟的时间(包括5个科目,每个科目有10个问题)。我希望学生在主页上单击开始时,倒数计时器立即启动并自动更新。事实上,这是很容易做到的一页 问题是,如果学生单击进入下一页,我希望计时器从上一页停止的位置开始,然后继续倒计时。Php 跨多个页面的倒计时变量,php,javascript,countdown,Php,Javascript,Countdown,我有一个电子考试的演示网站,每个学生在整个考试中有15分钟的时间(包括5个科目,每个科目有10个问题)。我希望学生在主页上单击开始时,倒数计时器立即启动并自动更新。事实上,这是很容易做到的一页 问题是,如果学生单击进入下一页,我希望计时器从上一页停止的位置开始,然后继续倒计时。 我曾想过使用会话,但如何让Javascript在PHP中设置会话变量?当时的想法是使用AJAX,但我不知道如何使用它 有人能帮我吗,即使它需要AJAX以外的东西 附言: 我想要显示的是剩余的秒数,而不是当前时间 谢谢。您
我曾想过使用会话,但如何让Javascript在PHP中设置会话变量?当时的想法是使用AJAX,但我不知道如何使用它 有人能帮我吗,即使它需要AJAX以外的东西 附言:
我想要显示的是剩余的秒数,而不是当前时间
谢谢。您可以使用如下算法:
在这种情况下,没有真正的“计时器”——只有一个开始时间,以及检查15分钟是否已经过去的逻辑。如果你想向用户显示一个计时器,那么数学计算将很简单。你不必知道它在另一页的什么地方停止 您只想知道用户何时单击开始 只需将其保存在数据库或文件中即可 并在每次请求时计算服务器上剩余的时间 因为客户端很容易被操纵
在服务器上计算剩余时间后,您可以在每页上使用javascript进行倒计时。您只需将页面放入iFrame中,并在主页上设置倒计时计时器。我找到了一种简单的方法,只需进行少量搜索 PHP: 然后在每一页上:
<script type="text/javascript">
var startTime = <?php echo $_SESSION['start_time']; ?>;
//calculate remaining time
</script>
var startTime=;
//计算剩余时间
很简单,您可以存储学生第一次开始测试的时间戳,并将其输出到每个页面。然后,只需从时间戳中减去当前时间,即可得到经过的时间
然而,依赖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...
问题#1
等
重要的是,一旦设置了时间戳值,就不要在会话中重置它。否则,考生只需点击一下,直到到达计数器重置的页面,就可以获得更多的考试时间。@Ravan:如果我的浏览器崩溃了怎么办?我可以再次参加测试吗/我失败了吗?@Ravan
$\u SESSION['start\u time']
将只给出测试开始的时间,而不是页面离开的时间。@PeeHaa这是一种极端情况如果用户获得页面的缓存版本,它可能会失败。正如我所说的,这是一个简单的解决方案。@afaolek:这是你应该现在考虑而不是以后考虑的事情。相信我,现在想一个好的可持续解决方案总是比以后好。在过去,我通过艰苦的方式学会了:D
<?php
if(!isset($_SESSION['test_start_timestamp')) {
$_SESSION['test_start_timestamp'] = time();
}
?>
<h3>Question #1</h3>
etc...