Jessi: Zeitermittlung in Javascript unter Perl

Hallo,
ich möchte mein Formular nur abschicken lassen, wenn mindestens x Sekunden vergangen sind zwischen Aufruf des Formulars und dem Absenden.
Am Anfang des PERL-Scripts steht:

my zeit_anf = time();

Weiter unten, in dem Formular möchte ich beim Abschicken des Formulars
die neue Zeit holen und mit der ersten vergleichen.
Wie erhalte ich aber in dem Beispiel den Wert zeit_end ???

print <<XXX;
......
<form action="http://......" method="post" name="formular"
      onSubmit = ".... if (zeit_anf + 30 < zeit_end) return true">
....

Gruß
Jessi

  1. Hallo,

    Weiter unten, in dem Formular möchte ich beim Abschicken des Formulars
    die neue Zeit holen und mit der ersten vergleichen.
    Wie erhalte ich aber in dem Beispiel den Wert zeit_end ???

    Genauso, wie du die Anfangszeit ermittelt hast.
    Dir ist übrigens schon klar, dass die Anfangszeit nach erneutem Aufruf des Formulars nicht mehr verfügbar ist?

    print <<XXX;
    ......
    <form action="http://......" method="post" name="formular"
          onSubmit = ".... if (zeit_anf + 30 < zeit_end) return true">

    Was hast du denn hier vor? Ist das nur Pseudocode, oder versuchst du hier tatsächlich irgend einen Javascript-Perl-Mischmasch zustande zu bringen?

    Markus

    --
    http://www.apostrophitis.at
    六 7東曲 人港ラ
    1. Moin!

      Was hast du denn hier vor? Ist das nur Pseudocode, oder versuchst du hier tatsächlich irgend einen Javascript-Perl-Mischmasch zustande zu bringen?

      Er generiert mit Perl eine HTML Seite die JavaScript enthält.

      Die End Zeit müßte also von JavaScript mit new Date() ermittelt werden.

      -- Skeeve

      1. Hallo,

        Die End Zeit müßte also von JavaScript mit new Date() ermittelt

        Ja schon, nur verstehe ich nicht, warum man mit der Kirche ums Kreuz fahren will, wenn man doch solche Aufgaben _nur_ mit Perl erledigen sollte. Was passiert denn, wenn kein Javascript verfügbar ist?

        Markus.

        --
        http://www.apostrophitis.at
        六 7東曲 人港ラ
        1. Moin!

          Was passiert denn, wenn kein Javascript verfügbar ist?

          Dann kann das Formular auch ohne Gedenkpause abgeschickt werden.

          -- Skeeve

        2. Hallo

          Ja schon, nur verstehe ich nicht, warum man mit der Kirche ums Kreuz fahren will, wenn man doch solche Aufgaben _nur_ mit Perl erledigen sollte. Was passiert denn, wenn kein Javascript verfügbar ist?

          Gerne würde ich alles in Perl machen, allerdings weiss ich nicht wie ich das onSubmit="meinePruefung()" im Formular ersetzen kann.

          Gruß
          Jessi

          1. Moin!

            Gerne würde ich alles in Perl machen, allerdings weiss ich nicht wie ich das onSubmit="meinePruefung()" im Formular ersetzen kann.

            Gar nicht. Die Prüfung, die im Browser erfolgt, kannst Du so nicht ersetzen. Auf der anderen Seite: Du mußt sie u.U. ohnehin auf dem Server zusätzlich durchführen.

            -- Skeeve

            1. Hallo

              Gar nicht. Die Prüfung, die im Browser erfolgt, kannst Du so nicht ersetzen. Auf der anderen Seite: Du mußt sie u.U. ohnehin auf dem Server zusätzlich durchführen.

              Letzteres mache ich.
              Damit keine robots das Formular absenden, wollte ich noch eine Mindestzeit zwischen Aufruf und Absenden des Formulars abfragen. Dies ist dann so wohl nicht sinnvoll (da es nur mit Javascipt funktioniert).
              Gruß
              Jessi

              1. Moin!

                Damit keine robots das Formular absenden, wollte ich noch eine Mindestzeit zwischen Aufruf und Absenden des Formulars abfragen. Dies ist dann so wohl nicht sinnvoll (da es nur mit Javascipt funktioniert).

                Robots haben kein JavaScript (normalerweise). Aber sie senden doch auch keine Formulare ab, oder?

                -- Skeeve

                1. Hallo

                  Robots haben kein JavaScript (normalerweise). Aber sie senden doch auch keine Formulare ab, oder?

                  Und wie bekomme ich dann immer wieder mit allerlei Schrott ausgefüllte Formulare zugeschickt (im Sekundenabstand)?

                  Und zu der Zeitermittlung noch eine Frage:
                  Ich habe jetzt im Perl-Script

                  my $zeit_anf = time() * 1000;  # in 1/1000 Sekunden wie in Javascript
                  .....

                  onSubmit = "jetzt = new Date();zeit_ende = jetzt.getTime();alert($zeit_anf + ' * ' + zeit_ende);"

                  Auch wenn ich das Formular innerhalb weniger Sekunden nach Aufruf absende, ist zwischen $zeit_anf und zeit_ende eine Differenz von ca. 105 Sekunden?
                  Wie kann man das erklären?

                  Gruß
                  Jessi

                  1. Moin!

                    Und wie bekomme ich dann immer wieder mit allerlei Schrott ausgefüllte Formulare zugeschickt (im Sekundenabstand)?

                    Ich weiß es nicht. Vielleicht verschicken Robots ja doch. Ich hatte ja nur gefragt. ;-)

                    Auch wenn ich das Formular innerhalb weniger Sekunden nach Aufruf absende, ist zwischen $zeit_anf und zeit_ende eine Differenz von ca. 105 Sekunden?
                    Wie kann man das erklären?

                    Zum Beispiel mit unterschiedlichen Zeiten auf Server und Client.

                    -- Skeeve

      2. Hallo,
        wie erwische ich die gleiche Zeitzone wenn ich einmal in perl die Zeit hole mit time() und einmal in javascript mit new Date().
        Zitat:

        In JavaScript ist dies - wie in der C- und Unix-Welt - der 1. Januar 1970, 0:00 Uhr UTC (Universal Coordinated Time). Die Einheit, in der in JavaScript intern Zeit berechnet wird, ist eine Millisekunde.

        Zitat:
        Perl:

        time - Zeitpunkt ermitteln
        Ermittelt die Anzahl Sekunden, die vom 1.1.1970 0.00 Uhr bis zum Augenblick des Aufrufs vergangen sind.

        Ergibt nicht das gleiche.

        1. Moin!

          time - Zeitpunkt ermitteln
          Ermittelt die Anzahl Sekunden, die vom 1.1.1970 0.00 Uhr bis zum Augenblick des Aufrufs vergangen sind.

          Auch in Perl ist es UTC

          perldoc -f time:
                 time    Returns the number of non-leap seconds since whatever time the
                         system considers to be the epoch, suitable for feeding to
                         "gmtime" and "localtime". On most systems the epoch is 00:00:00
                         UTC, January 1, 1970; a prominent exception being Mac OS Clas-
                         sic which uses 00:00:00, January 1, 1904 in the current local
                         time zone for its epoch.

          -- Skeeve