Uhr(Serverzeit) -> *zurück* -> alte Zeit

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Uhr(Serverzeit) -> *zurück* -> alte Zeit

    Hallo,

    also folgendes: ich habe ein Uhr in einem Textfeld, die mittels TimeOut jede Sekunde um eins erhöht wird. Die Anfangszahlen kriegt JavaScript von PHP. Das funktioniert soweit auch ganz gut. Folgt man nun aber einem Link und klickt anschließend auf zurück, so zeigt er die Uhr die Uhrzeit an, die dort stand, als man die Seite das erste mal aufgerufen hatte.
    Ich nehme an, das kommt daher, weil der Browser die Datei im Cache behalten hat, und der PHP-Teil nicht nochmal ausgeführt wird.

    Was kann ich denn dagegen machen
    Oder: kann ich überhaupt was degegen machen?

    Ich bin für jede Anregung dankbar.

    P.S.: Ich glaube nicht, dass ihr hierzu Code durchschauen müsst, weil erstens ist das nicht viel und man kann sich's vorstellen und zweitens handelt es sich hierbei meinem Glauben nach um keinen Fehler in der Programmierung.
    Es ist nicht deine Schuld, dass die Welt ist, wie sie ist,
    Es wär nur deine Schuld, wenn sie so bleibt

  • #2
    http://de.selfhtml.org/javascript/objekte/date.htm
    Ich denke, also bin ich. - Einige sind trotzdem...

    Comment


    • #3
      Ich kann happi nur beipflichten. Wenn du dich mit date und JS auseinander setzt, dann kannst du bei jedem Laden der Seite die aktuelle Zeit des Clients ermitteln.
      Wenn du mit JS zurück klickst, dann kriegst du die aktuelle Uhrzeit und mit php eben nur die Zeit des ersten Aufrufs.
      Also folge happies Link und dir wird geholfen

      Gruss

      tobi
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Comment


      • #4
        naja, das unschöne ist, dass es die clientzeit ist...

        @Rumo: kannst du mir das JS mal an schicken?
        Last edited by TobiaZ; 18-06-2005, 10:14.

        Comment


        • #5
          Also, mein Ehrgefühl schreibt mir vor, mich hier mal zu wehren:
          Ich weiß sehr wohl, wie man in JavaScript die Uhrzeit bekommt!
          Es ist nur so, dass das ein bsschen witzlos ist, wie Tobiaz schon sagte, weil ja jeder die Zeit auf seinem Computer hat.
          Deswegen wollte ich es mit der Serverzeit machen, was mich zu PHP geführt hat, und hatte dann eben dieses Problem.

          Ich denke, ich werde Tobiaz' Idee umsetzen, nämlich den Cache des Browsers zu verhindern.

          Vielen Dank für die Hilfe,
          Rumo
          Es ist nicht deine Schuld, dass die Welt ist, wie sie ist,
          Es wär nur deine Schuld, wenn sie so bleibt

          Comment


          • #6
            Und du mrinst das funktioniert?
            Immer?

            Kannst dir ja in eine Variable die Systemzeit zum Zeitpunkt des Aufrufs speichern und dann sowas machen
            Code:
            var startzeit = new Date(2005, 6, 18, 0, 0, 0); //serverzeit, die von php kommt
            
            var startzeit_user = new Date();
            
            var differenz = startzeit.getTime() - startzeit_user.getTime();
            Ich denke, also bin ich. - Einige sind trotzdem...

            Comment


            • #7

              Das ist die Idee, die ich brauchte!
              (Und, natürlich das Kommentar: dass ich da nicht selber d'rauf gekommen bin...)
              Also; ich habs jetzt so gemacht:
              PHP Code:
              var client = new Date();
              var h = <?=date('G');?>;
              var m = parseInt(<?=date('i');?>);
              var s = parseInt(<?=date('s');?>);
              h = h + (client.getHours() - h);
              m = m + (client.getMinutes() - m);
              s = s + (client.getSeconds() - s);
              ...
              Es ist nicht deine Schuld, dass die Welt ist, wie sie ist,
              Es wär nur deine Schuld, wenn sie so bleibt

              Comment


              • #8
                Bist du sicher, dass du das genau so machen willst?

                Code:
                var h = h + (client.getHours() - h);
                ?

                Schreiben wir mal um:
                Code:
                h = h + (client.getHours() - h);
                
                Klammern weglassen, da die bei Addition/Subtraktion irrelevant sind
                
                h = h + client.getHours() - h;
                
                umstellen
                
                h = h - h + client.getHours();
                
                h = client.getHours();
                Du solltest schon noch irgendwo die Differenz zwischen Client- und Serverzeit berücksichtigen...
                Ich denke, also bin ich. - Einige sind trotzdem...

                Comment


                • #9
                  Jaah...
                  eigentlich schon...
                  ich hab mir nur gedacht, weil doch...
                  und überhaupt...
                  also, das man die Klammern bei addition/subtraktion einfach weglassen kann, kann man so aber nicht sagen, weil 3-(2+1) was andres ist als 3-2+1 !!!

                  okok, ich hatte mich vertan, in der eile, nur noch mal getestet...
                  UND OFFLINE WAREN SERVER- UND BROWSERZEIT JA GLEICH,.
                  also hatte es doch geklappt...

                  oh mann... dummheit tut weh... zum glück bin ich trotzdem

                  aber ernsthaft, ich hab jetzt voll die blockade...
                  alsowollen wir doch mal nachdenken... da gibts eine schönes lied, das heißt "try"...

                  Erzähler: 10 minuten später... Rumo sitzt wirklich schon ewig vor diesem Computer und kommt nicht weiter...

                  also... ich komm nicht drauf... ich bin sehr dankbar, wenn mir jemand sagt, wie ich des amchen sol, weil ich hab echt voll des blackout.
                  ich will hier echt keinen code schnorren, aber kann mir nicht nochmal jemand nen tipp geben?
                  Es ist nicht deine Schuld, dass die Welt ist, wie sie ist,
                  Es wär nur deine Schuld, wenn sie so bleibt

                  Comment


                  • #10
                    nun, ich wüsste jetzt auch nicht, was der Happy da mit der Differenz machen will...

                    Comment


                    • #11
                      Die Differenz in Millisekunden und die Funktion setTime sollten dir auf jeden Fall die aktuelle Uhrzeit auf dem Server geben können, willst du das nicht?
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Comment


                      • #12
                        Jetzt komm' ich ehrlich gesagt überhaupt nimmer mit.
                        Die differenz ändert sich doch, nachdem man auf zurück geklickt hat.
                        Andererseits kann diese Differenz auch daher rühren, dass der Browser eben ein sosehr andere Zeit hat.
                        Was nützt es mir also, wenn ich irgendeinen Unterscheid zwischen Server- und Browserzeit habe?
                        Es ist nicht deine Schuld, dass die Welt ist, wie sie ist,
                        Es wär nur deine Schuld, wenn sie so bleibt

                        Comment


                        • #13
                          Original geschrieben von Rumo
                          Die differenz ändert sich doch, nachdem man auf zurück geklickt hat.
                          Aber nur, wenn du sie immer wieder berechnest.

                          berechnest du sie nur beim Laden der Seite, bleibt sie gleich (bis zum nächsten laden, wo du auch wieder eine neue Serverzeit übermittelst)


                          Was nützt es mir also, wenn ich irgendeinen Unterscheid zwischen Server- und Browserzeit habe?
                          <seufz mode="tief" />

                          Auf dem Server ist es 09:28:57
                          Auf dem Client ist es 09:30:57, also zwei Minuten später.

                          Du willst immer die Serverzeit anzeigen.
                          Differenz = 2 Minuten = 120 Sekunden = 120.000 Millisekunden

                          Benutzer bleibt auf der Seite: Angezeigte Serverzeit stimmt

                          Benutzer folgt einem Link um 09:31:48 (angezeigte Serverzeit = 09:29:48, also zwei Minuten früher) und kehrt nach 3 Minuten zurück auf die Seite:
                          Auf dem PC des Benutzers ist es 09:34:48.

                          Angezeigte Serverzeit ohne Berücksichtigung der Differenz = 09:29:48; falsch!

                          Angezeigte Serverzeit mit Berücksichtigung der Differenz = 09:34:48 - 120.000 Millisekunden = 09:32:48; richtig!

                          Jetzt verstanden?
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Comment


                          • #14
                            Angezeigte Serverzeit ohne Berücksichtigung der Differenz = 09:29:48
                            Das ist falsch (und das ist jetzt kein Denkfehler von mir, sondern das weiß ich aus der Praxis): Wenn ich die Serverzeit ausgeben lass, dann ist das in deinem Beispiel 09:28:57.


                            berechnest du sie [die Differenz] nur beim Laden der Seite, bleibt sie gleich (bis zum nächsten laden, wo du auch wieder eine neue Serverzeit übermittelst)
                            Also... wir sind uns doch einig, dass man die Differenz mit JavaScript berechnen muss (is ja logisch). Aber der JavaScript-Code wird ja auch nach dem Klicken auf Zurück ausgeführt (nur eben PHP-Code nicht), und folglich wird auch das new Date(); erneuert...


                            <seufz mode="tief" />
                            Danke, trotz allem, schonmal.
                            Mir leuchtet es immer noch nicht ein, aber schon allein für deine Mühe bin ich dir wirklich sehr dankbar.
                            Es ist nicht deine Schuld, dass die Welt ist, wie sie ist,
                            Es wär nur deine Schuld, wenn sie so bleibt

                            Comment


                            • #15
                              So würde es funktionieren:

                              <iframe src="datum.php?" width="1" height="1"></iframe>
                              <script language="JavaScript">
                              onload = function() {
                              alert(datum)
                              }
                              </script>


                              Hab das aber bisher nur mit dem IE getestet.


                              datum.php =>
                              <?
                              header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
                              header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
                              header("Cache-Control: no-store, no-cache, must-revalidate");
                              header("Cache-Control: post-check=0, pre-check=0", false);
                              header("Pragma: no-cache");
                              ?>
                              <html>
                              <body>

                              <script language="JavaScript">
                              <? echo 'top.datum = "' . date('d.m.Y H:i:s') . '";' . "\n"; ?>
                              </script>

                              </body>
                              </html>



                              oder aber einfach:
                              header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
                              header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
                              header("Cache-Control: no-store, no-cache, must-revalidate");
                              header("Cache-Control: post-check=0, pre-check=0", false);
                              header("Pragma: no-cache");

                              in die betreffende Seite einfügen.
                              Last edited by Sebastian W; 20-06-2005, 14:27.
                              Grüsse,
                              Sebastian


                              Profil Flex Freelancer
                              Twitter twitter.com/flashhilfe
                              Web Flash und Flex Community

                              Comment

                              Working...
                              X