2016-04-13 13 views
0

Ich habe eine HTML-Seite, die den Arbeiter auf Pausenzeit setzt, die von seinem/ihrem Tagesjob subtrahiert werden. Das Problem ist, dass wenn er/sie die Zeit aktualisiert, der Timer automatisch von Anfang an beginnt. Ich möchte, dass es in seinem normalen Fluss weitergeht. Gibt es eine Möglichkeit, die Seite nicht aktualisieren zu können? Eine andere Art von Lösung ist ebenfalls willkommen. Vielen Dank im Voraus.Gibt es eine Möglichkeit, eine Seite nicht aktualisieren zu können?

<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

Nr? Nein? Nein. – evolutionxbox

+0

was meinst du unmögliche lol? –

+2

Sie können das Backend mit den Timer-Informationen aktualisieren. Wenn die Seite aktualisiert wird, wird die Information bereits gespeichert und der Timer wird nicht auf 0 zurückgesetzt. – odannyc

Antwort

1

Da Sie PHP verwenden, können Sie die $_SESSION Variablen PHP verwenden. SESSION-Variablen leben auf dem Server und sind für den Computer einzigartig. Sie können auch ein Anmeldesystem erstellen, das für den angemeldeten Benutzer eindeutig sein kann.

Beginnen Sie die Seite mit:

<?php 
    session_start(); 

vor jedem anderen PHP-Code. Ich empfehle, es ganz oben auf der Seite zu platzieren, bevor die <DOCTYPE> Deklaration, bevor irgendwelche PHP enthält, vor irgendetwas.

, die Ihnen den Zugriff auf die PHP $_SESSION Variablen, so dass Sie so etwas wie tun:

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

Der Benutzer kann die Seite aktualisieren, bis die Kühe nach Hause kommen, und es wird die Zeit eingestellt bleiben. Wenn sie auf eine Schaltfläche klicken, können Sie die Seite sagen, eine „break_end“ Variable zu erstellen:

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

Später können Sie die beiden Werte subtrahieren und die Pausenzeit von der Arbeitszeit abziehen. (Siehe Referenzen unten)

Beachten Sie, dass Sie nach dem Rendern der Seite keinen PHP-Code mehr ausführen können. Der Weg dahin heißt AJAX und ist ziemlich geradlinig. Hier ist eine SO Antwort, die Informationen hat, und enthält Links zu einfachen Beispielen:

Prevent Page Load on Jquery Form Submit with None Display Button

In Ihrem Fall könnten Sie AJAX benötigen, wenn Sie zwei Tasten auf einer Webseite haben wollen: Begin Coffee Break und End Coffee Break. Wenn Sie darauf klicken, wird kein PHP ausgeführt, und die Verwendung von JavaScript zum Speichern der Uhrzeit führt zu dem Problem, das Sie in Ihrer Frage beschreiben. Wenn Sie jedoch auf eine Schaltfläche klicken, kann JavaScript AJAX verwenden ... und AJAX kann eine PHP-Datei ausführen, die die PHP-Variablen $_SESSION einstellt (oder liest).

Eine andere Sache zu prüfen ist, dass, wenn Sie localstorage oder js Plätzchen verwenden, ein kluger Benutzer die Zahlen auf Ihnen ändern könnte. PHP-Variablen leben sicher auf dem Server. Nur der serverseitige Code kann sie ändern.

Referenzen, die hilfreich sein können:

Wirklich

Subtracting two dates in php

how to subtract two dates and times to get difference

Verwandte Themen