我有一个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>
由于您使用的是PHP,因此可以使用PHP $_SESSION
变量。SESSION变量存在于服务器上,并且对于计算机是唯一的您还可以创建一个登录系统,并且它们可以是登录用户独有的
页面开头:
<?php
session_start();
在任何其他PHP代码之前。我建议将它放在页面的最顶部,在<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答案,它包含信息,并包含到简单示例的链接:
使用无显示按钮防止Jquery表单提交页面加载
在您的情况下,如果您想在网页上有两个按钮,您可能需要AJAX:Begin Coffee Break
和End Coffee Break
单击它们不会运行任何PHP,使用javascript存储时间会产生您在问题中描述的问题但是,单击按钮可以允许javascript使用AJAX。。。AJAX可以运行PHP文件、设置(或读取)PHP $_SESSION
变量。
另一件需要考虑的事情是,如果你使用localstorage
或js cookie,聪明的用户可以更改你身上的数字。PHP变量安全地存在于服务器上。只有服务器端代码才能更改它们。
可能有用的参考资料:
在php 中减去两个日期
如何减去两个日期和时间以获得差异