Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在单击“刷新”按钮后从“重新启动”禁用计时器?_Javascript_Php_Timer - Fatal编程技术网

Javascript 如何在单击“刷新”按钮后从“重新启动”禁用计时器?

Javascript 如何在单击“刷新”按钮后从“重新启动”禁用计时器?,javascript,php,timer,Javascript,Php,Timer,我想问一下。如何在单击“刷新”按钮后从“重新启动”禁用计时器?这是我的代码: session_start(); $result2 = mysql_query("SELECT * FROM test WHERE testNum='$testnum'"); $rec2 = mysql_fetch_array($result2); <script language="JavaScript"> var hoursleft = <?php echo $rec2['testDuratio

我想问一下。如何在单击“刷新”按钮后从“重新启动”禁用计时器?这是我的代码:

session_start();
$result2 = mysql_query("SELECT * FROM test WHERE testNum='$testnum'");
$rec2 = mysql_fetch_array($result2);

<script language="JavaScript">
var hoursleft = <?php echo $rec2['testDurationHour'];?>;
var minutesleft = <?php echo $rec2['testDurationMin'];?>; 
var secondsleft = 0;

end = new Date();
end.setMinutes(end.getMinutes()+minutesleft);
end.setSeconds(end.getSeconds()+secondsleft);

function cd(){
now = new Date();
diff = end - now;
diff = new Date(diff);
var sec = diff.getSeconds();
var min = diff.getMinutes();
var hr = diff.getHours()-1;

if (min < 10){ 
min = "0" + min;
}
if (sec < 10){
sec = "0" + sec;
}
if(now >= end){
window.alert("Time is up. Press OK to continue."); 
document.forms[0].submit();
}
else
{
document.getElementById("cdtime").innerHTML =  min + ":" + sec;
setTimeout("cd()", 10); 
}
}
window.onload = cd;
session_start();
$result2=mysql_查询(“从testNum='$testNum''的测试中选择*);
$rec2=mysql\u fetch\u数组($result2);
var hoursleft=;
var minutesleeft=;
var secondsleft=0;
结束=新日期();
end.setMinutes(end.getMinutes()+minutesleft);
end.setSeconds(end.getSeconds()+secondsleft);
函数cd(){
现在=新日期();
diff=现在结束;
diff=新日期(diff);
var sec=diff.getSeconds();
var min=diff.getMinutes();
var hr=diff.getHours()-1;
如果(最小值<10){
最小值=“0”+最小值;
}
如果(第10节){
秒=“0”+秒;
}
如果(现在>=结束){
window.alert(“时间到了,按OK继续”);
document.forms[0]。提交();
}
其他的
{
document.getElementById(“cdtime”).innerHTML=min+“:”+sec;
setTimeout(“cd()”,10);
}
}
window.onload=cd;

如何在用户单击“刷新”按钮后禁用计时器重新启动?

我知道这是一个快速而肮脏的答案。但我认为这已经足够了。

您可以使用会话来检查正在进行的测试编号,因此,每当针对相同的测试编号刷新测试页面时,剩余的小时和分钟数将设置为0(这将阻止您的时间再次重新启动),如果不是(您的测试页面未被刷新),您可以从数据库中按必要的值填充它。注意:我使用“added”表示附加代码,在编写代码的一些修改时使用“modified”。见下文

session_start();

// added
$hoursLeft = 0;
$minutesLeft = 0;

$result2 = mysql_query("SELECT * FROM test WHERE testNum='$testnum'");
$rec2 = mysql_fetch_array($result2);

// added
if(!isset($_SESSION['testnum']) || $_SESSION['testnum'] <> $testnum) { 
    $_SESSION['testnum'] = $testnum;
    $hoursLeft = $rec2['testDurationHour'];
    $minutesLeft = $rec2['testDurationMin'];
} else {
    $msg = "It seems you've been refreshing your page and it's prohibited. Press OK to continue";
}

<script language="JavaScript">
// modified
var hoursleft = <?php echo $hoursLeft ?>;

// modified
var minutesleft = <?php echo $minutesLeft ?>; 
var secondsleft = 0;

end = new Date();
end.setMinutes(end.getMinutes()+minutesleft);
end.setSeconds(end.getSeconds()+secondsleft);

function cd(){
    now = new Date();
    diff = end - now;
    diff = new Date(diff);
    var sec = diff.getSeconds();
    var min = diff.getMinutes();
    var hr = diff.getHours()-1;

    if (min < 10) { 
        min = "0" + min;
    }
    if (sec < 10) {
        sec = "0" + sec;
    }
    if(now >= end) {
        // modified
        var msg = <?php if (isset($msg)) echo '"'.$msg.'"'; else echo '"'."Time is up. Press OK to continue.".'"'; ?>;
        window.alert(msg); 
        document.forms[0].submit();
    }
    else {
        document.getElementById("cdtime").innerHTML =  min + ":" + sec;
        setTimeout("cd()", 10); 
    }
}
window.onload = cd;
session_start();
//增加
$hoursLeft=0;
$minutesleet=0;
$result2=mysql_查询(“从testNum='$testNum''的测试中选择*);
$rec2=mysql\u fetch\u数组($result2);
//增加
如果(!isset($_会话['testnum'])|$_会话['testnum']$testnum){
$\会话['testnum']=$testnum;
$hoursLeft=$rec2['testDurationHour'];
$minutesLeft=$rec2['testDurationMin'];
}否则{
$msg=“您似乎一直在刷新页面,并且被禁止。请按“确定”继续”;
}
//修改
var hoursleft=;
//修改
var minutesleeft=;
var secondsleft=0;
结束=新日期();
end.setMinutes(end.getMinutes()+minutesleft);
end.setSeconds(end.getSeconds()+secondsleft);
函数cd(){
现在=新日期();
diff=现在结束;
diff=新日期(diff);
var sec=diff.getSeconds();
var min=diff.getMinutes();
var hr=diff.getHours()-1;
如果(最小值<10){
最小值=“0”+最小值;
}
如果(第10节){
秒=“0”+秒;
}
如果(现在>=结束){
//修改
var msg=;
window.alert(msg);
document.forms[0]。提交();
}
否则{
document.getElementById(“cdtime”).innerHTML=min+“:”+sec;
setTimeout(“cd()”,10);
}
}
window.onload=cd;