我正在使用PHP编写基于Web的考试应用程序。
如果30分钟结束,表格的状态将会发生 (答案和未答复的问题将存储在数据库中)和 表格将被关闭,例如重定向到菜单页面。我试过类似的东西 的是:
PHP:
<?php
set_time_limit('30000');
function redirect(){
// Some Stuff
}
$i = 1;
while($i <= 45){
sleep('60');
callthis();
flush();
$i++;
}
?>
在我的hoster中,由于PHP的安全模式,无法使用set_time_limit。
表单中最可靠的基于服务器的解决方案(无Javascript)是什么 PHP中的计时器?
答案 0 :(得分:3)
这是一个简单的方法
提交表单时,您只需检查最近30分钟内生成的令牌。您可以实现一些客户端倒计时作为对用户的帮助,但实际时间必须在服务器端进行。
您需要添加一些额外的安全检查和平衡,例如确保登录用户一次只能有一个令牌。
答案 1 :(得分:1)
您需要在会话变量或等效的持久方法中存储测试开始的时间,并检查每个表单提交的已用时间。 (确保会话超时比测试持续时间更长或更长。)您可以显示一个静态编号,指定每次重新加载页面的剩余时间。如果您想显示倒计时,则需要使用javascript。
答案 2 :(得分:0)
HTTP是无状态协议。这意味着PHP程序的控制流程如下:
为了跟进,您必须在用户端运行某些内容。即,JavaScript。这可以告知用户他们的时间到了。此外,您还可以检查表单呈现给用户和提交表单之间的时间差异。但是这个处理不会发生直到用户返回PHP才能获得另一个页面。