我正在制作一个测验的倒数计时器。但是,管理员可以在不同的时间间隔设置测验,如15,30,45,60分钟。我用它作为php变量,倒计时我使用的是JavaScript。我现在面临的问题是我不知道如何在使用JavaScript时回显php变量。因此,一旦管理员设置15分钟并且学生点击测验,15分钟计时器将开始倒计时,当它达到0时,它将显示“时间到了!测验结束。答案已成功提交。”
请帮忙! ):
答案 0 :(得分:2)
您始终需要记住的是,客户端上发生的任何事情都是可利用的。如果您依靠Javascript来更新时间计数器,那么您也会对用户给予很多信任,因为他们不会乱用它。
最好的办法是使用JS处理计时器以实现图形目的,并让服务器检查实际时间。
有几种方法可以做到这一点,我想到的是:
学生开始测验,您将使用echo语句动态生成JS代码,例如:。
echo "<script type='text/javascript'>var maxtime=".$maxtime."; ... </script>";
或(更好),因为另一个答案是生成一个隐藏字段,然后您可以从JS中读取。
PHP代码还会在会话变量中存储最长结束时间(即当前时间+ 15分钟或任何分配的时间)。
你的JS计数器会降到0.当它达到0时会自动提交页面,或者要求用户这样做等。
提交答案时(由于时间用完或因为用户及时完成并自行提交答案),PHP将检查当前时间是否不大于会话var中存储的最大时间。
这将允许您检查用户是否没有作弊。
这不是唯一的选择,例如,您可以在DB中保存开始时间(或最长结束时间),这实际上取决于您对页面进行编码的方式。
答案 1 :(得分:0)
你只需要在隐藏的输入或div中回显计时器,如:
<div id="time">timer : <?php echo $time; ?></div>
然后使用例如jquery:
获取此值var time = $.('#time').html(); //extract the timer: string path from this one
你可以随意使用变量。