2017-05-22 3 views
0

Ich habe Timer mit localstorage implementiert. Es funktioniert gut.Timer-Implementierung für Webseite

Aber wenn ich nach dem Start des Timers einen Haltepunkt halte, blockiert der Timer. Sobald er die Breakpoints überquert hat, wird der Timer von dem Wert fortgesetzt, an dem er wegen des Breakpoints angehalten wurde.

Sobald der Timer erreicht 00:00 oder Benutzer übermittelt, muss ich die Daten an den Server senden. Aber das Problem ist, wie validiere ich, dass Benutzer keinen Hack wie pausieren den Timer durch Einrichten eines Haltepunktes gemacht habe.

Angenommen, ein Fall, My Timer Wert ist 5 Minuten. Der Benutzer hatte einen Unterbrechungspunkt für zwei Punkte und Änderungen in weiteren zwei Minuten. Benutzer reicht in der 4. Minute ein. Es ist aus Timer-Sicht gültig, aber nicht wirklich gültig.

Ein anderer Benutzer braucht wirklich 4 Minuten, um abzuschließen. Es ist gültig. In diesem Fall hatte er keine Breakpoints.

Wie vermeide ich diese Abweichung?

Irgendwelche Vorschläge?

+0

Warum verwenden Sie 'localStorage'? Benötigen Sie den Timer für die Seitennavigation oder zwischen den Sitzungen? (Wenn es alles innerhalb einer Seite ist, brauchen Sie nicht 'localStorage'. – nnnnnn

+0

@nnnnnn Danke für Ihren Kommentar. Ich benutzte, damit Benutzer den Timer nicht ändern kann. Wenn es eine Option gibt, erziehen Sie mich bitte –

+0

Wenn der Wert des Timers Wird in 'localStorage' gespeichert, kann der Benutzer diese ändern, ohne Breakpoints zu benötigen, sie können einfach die dev-Konsole öffnen und' localStorage.yourTimerName = something' eingeben. Es wäre besser, die Startzeit auf der Serverseite und dann beim Senden zu notieren Verwenden Sie * das * in einer serverseitigen Berechnung, um zu überprüfen, dass sie den clientseitigen Timer nicht hacken – nnnnnn

Antwort

0

An dem Punkt, an dem der Timer startet, wird die Uhrzeit (und das Datum) protokolliert. Vergleichen Sie das mit der Uhrzeit (und dem Datum), wenn der Timer stoppt. Überprüfen Sie den Unterschied in der Zeit, bevor Sie dem Benutzer die Möglichkeit geben,