2016-04-13 34 views
0

我有一个HTML页面,可以让工作人员暂停,这将从他/她的日常工作中减去。问题是如果他/她刷新时间,计时器会自动从头开始。我希望它继续正常的流程。有没有办法让页面无法刷新?其他一些解决方案也是受欢迎的。先谢谢你。有什么办法让页面无法刷新?

<script> 
$(".example").TimeCircles({start: true,circle_bg_color: "#FFFFFF", time: { Days: {show: false}, Hours: {show: false}, Minutes: {show: true}}}) 
.addListener(
function(unit,value,total) { 
    if (total == 20) { 
     document.body.style.backgroundColor = "#FFD150"; 

    } else if (total == 10) { 
    document.body.style.backgroundColor = "#E84141"; 

    } else if (total == 0) { 
    document.body.style.backgroundColor = "#000000"; 
    } 
} 

);

addEventListener("click", function() { 
var 
    el = document.documentElement 
, rfs = 
     el.requestFullScreen 
    || el.webkitRequestFullScreen 
    || el.mozRequestFullScreen 
; 
rfs.call(el); 

});

</script> 
+1

号?没有?没有。 – evolutionxbox

+0

你是什么意思,它不可能大声笑? –

+2

您可以使用计时器信息更新后端。所以,如果他们刷新页面的信息将被存储,并且定时器不会刷新回0. – odannyc

回答

1

由于您使用的是PHP,因此您可以使用PHP $_SESSION变量。 SESSION变量位于服务器上,对计算机来说是唯一的。 您也可以创建一个登录系统,它们可以是登录用户唯一的。在任何其他的PHP代码

<?php 
    session_start(); 

开头的页面。我建议在<DOCTYPE>声明之前,在任何PHP包含之前,在之前将它放置在页面的最顶端。

这将会给你访问到PHP $_SESSION变量,所以你可以这样做:

<?php 
    session_start(); 
    //Lots more PHP code in between 
    $dt = date("Y-m-d H:i:s"); 
    $_SESSION['break_begin'] = $dt; 

用户可以刷新页面,直到母牛回家,时间将保持置。当他们点击一个按钮,你可以告诉页面来创建一个“break_end”变量:

$_SESSION['break_end'] = date("Y-m-d H:i:s"); 

以后,您可以减去两个值,并从工作时间减去暂停时间。 (请参阅下面的参考资料)

请注意,页面呈现后,您无法再运行任何PHP代码。解决这个问题的方法叫做AJAX,它非常简单。这里是具有信息的SO答案,并包含指向简单的例子:Begin Coffee BreakEnd Coffee Break

Prevent Page Load on Jquery Form Submit with None Display Button

在你的情况,如果你想有一个网页上的两个按钮,您可能需要AJAX。 点击它们将不会运行任何PHP,并使用JavaScript来存储时间将创建您在问题中描述的问题。然而,点击一个按钮可以让JavaScript使用AJAX ...和AJAX可以运行PHP文件,设置(或读取)PHP $_SESSION变量。

要考虑的另一件事是,如果您使用localstorage或js cookie,聪明的用户可以更改您的号码。 PHP变量安全地存在于服务器上。只有服务器端代码才能更改它们。

参考文献可能会有所帮助:真的

Subtracting two dates in php

how to subtract two dates and times to get difference

相关问题