Countdown - nicht über Clientzeit

schwaet

Grünschnabel
Hallo,

ich versuche einen Countdown zu realisieren, der sich nicht über
Code:
new Date();
- also nicht über die Zeit vom Client den aktuellen Zeitstempel holt.
Wenn ich den Zeitstempel über PHP, ASP oder sonst was übergebe, habe ich das Problem, dass die Sprachen eben Serverseitig sind und somit immer die Zeit angezeigt wird, zu welcher das Script geladen worden ist.


Situation:

Benutzer XY hat ein Zeitguthaben von 30 Minuten.
Er meldet sich am System an und soll ab dem Zeitpunkt seiner Anmeldung (Datum1) bis zum Endpunkt seiner "Session" (Datum1+30min) den Countdown sehen.

Aktuell sieht es so aus, dass wenn er die Clientzeit (die von seinem System) herunterschraubt - er sich immer mehr Zeit "zubuchen" kann. In wirklichkeit wird er getrennt vom System (also, das problem ist es nicht) - aber die Anzeige ist eben "falsch" wenn er mit der Zeit rumspielt.


Hat jemand eine Idee wie ich stattdessen die Zeit vom Server nehmen könnte - irgendwie?
Ja, ich weiß - JS ist clientseitig und daher eigentlich unmöglich - aber es gibt ja genügend "hacks" um an diverse Dinge zu kommen. Die "Lösung" muss ja nichtmal in JS sein, bin für jede alternative offen...

:google: *geiler smiley* hat mir auch ned weiter geholfen ;)
aja und :rtfm: *noch geilerer smiley* auch nicht ;-)


Vielen Dank im Voraus für eure Anregungen und Ideen...
 
Hallo schwaet,

ich würde dem User, wenn er auf die Seite kommt, eine Session geben, in der die Zeit per PHP vom Server hinterlegt ist. Dann würde ich die Zeit bei jedem Seitenaufruf prüfen und ggf. die Session beenden, wenn die Zeit abgelaufen ist. So hast du weitestgehend Kontrolle darüber. Denn nutzt du eine Möglichkeit, per JavaScript und der User hat es deaktiviert, kann er Dein Angebot nicht nutzen. Ich hoffe, dass es vielleicht eine Anregung ist.

Grüße
 
ok, hab mich etwas "kompliziert" oder "ungenau" ausgedrückt - mein fehler.

Also.... *G*

user meldet sich an, alle daten sind vorhanden (anmeldezeitpunkt, wie lang darf er drin sein usw. usw. usw. usw.)....

jetzt will ich einen typischen countdown haben der sich -ich nenns mal- "realtime" aktualisiert. das ganze ohne seitenrefresh oder ähnliches. die perfekte sprache dafür ist javascript. das problem aber ist, dass javascript clientseitig abläuft und die funktion "new Date();" nicht anderses macht wie die Clientzeit abzurufen und diese im format "F d, Y H:i:s" an eine Variable zu übergeben.

Wenn also der Benutzer NICHT an der uhrzeit rumspielt funktioniert die Anzeige ohne Probleme - er wird auch automatisch getrennt usw.

Wenn der Benutzer aber an der uhrzeit rumspielt funktioniert die Anzeige logischerweise nicht. Er wird aber trotzdem automatisch getrennt.

Mein Problem ist also die reine Anzeige. Ich möchte diese, ohne Seitenrefresh, "unmanipulierbar" haben um eine fehlanzeige zu vermeiden.

Mit Javascript dürfte das, soweit ich i.d. theorie "denke", nicht möglich sein. Nun meine Frage: alternativen / ideen?
 
Gut, dann würde ich ich vielleicht folgendes machen.

Nimm per PHP die Zeit des Server, packe Sie in ein iframe oder in ein div und lasse die Seite einfach jede Sekunde aktualisieren. Das wäre dann jetzt meine Idee dazu :-)

Ich weiß nicht, ob es in einer anderen Sprache einfacher wäre.

Grüße
 
*lol* also so einfach mach ich es mir aber nun auch wieder nicht....und en iframe ist ja mal das absolute do-not für mich...genauso wie irgendwelche "<table>"-Tags ;-)

trotzdem danke für deinen vorschlag :-)
 
Also ich habe ein Spiel geschrieben, wo man nach einem Kampf eine Kampfsperre hat. Ich habe den Zeitstempel des Kampfes in der Datenbank gespeichert, und dieser wird beim erneuten Aufrufen der Seite, zusammen mit dem Aktuellen Zeitstempel an eine JS Funktion übergeben.
In der Funktion wird dann die Differenz zwischen den Zeitstempeln ermittelt, und von da aus weiter runter gezählt.

Da sich deine Benutzer einloggen müssen, kannst du auch den Zeitpunkt des Logins erfassen und in der Datenbank speichern.

Die Zeitstempel erfasse ich mit PHP, also Serverseitig.
 
sorry, aber so richtig lesen wollt ihr nicht wirklich - oder?

#1 es liegt nicht an der berechnung
#2 alle daten sind vorhanden
#3 es geht um die ANZEIGE des Countdowns...


Dein "toller" code wird auch nicht funktionieren, da du den zeitstempel der anmeldung an JS übergibst, JS anschließend das aktuelle datum über die CLIENTZEIT ermittelt und anhand dieser beiden parameter den countdown erzeugt. ERGEBNIS: wenn jemand eine falsche clientzeit eingestellt hat, wird der countdown falsch dargestellt - und genau das möchte ich verhindern. Es geht NUR und AUSSCHLIESSLICH um die ANZEIGE. Nichts anderes...


- und wenn ich dich jetzt falsch verstanden haben sollte, dann bitte ich die etwas "sarkastische" antwort mit einem lächeln aufzufassen ;)
 
sorry, aber so richtig lesen wollt ihr nicht wirklich - oder?

... Okay, dann lass mich mal probieren :) - Also du brauchst eine dauernde Kontrolle der Serverzeit, weil du dort den Abgleich vornehmen wills, oder? - Ich brauchte mal was ähnliches, ein Buchungssystem sollte, zur Laufzeit, die aktuellen möglichen Plätze ermitteln und dem Benutzer freischalten.

Nun die Lösung ist, wie so oft, AJAX ;-) - folgende einfacher Ansatz:

kucke dir http://www.prototypejs.org an - dort insbesondere die Funktion Ajax.PeriodicalUpdater() - mit einem kleinen 'PHP-Proxy' kannst du so recht einfach die aktuelle Serverzeit abfragen und bist unabhängig vom Client!

Ich hoffe das hilft
Dirk
 
*d´oh -- sich über sich selbst aufreg*
dass ich da ned selber drauf gekommen bin.... :/

herzlichen dank! bekommst sogar ein ehrenabzeichen für: "post richtig gelesen" :)
 

Neue Beiträge

Zurück