Zeitermittlung in Javascript unter Perl
Jessi
- 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
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
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
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.
Moin!
Was passiert denn, wenn kein Javascript verfügbar ist?
Dann kann das Formular auch ohne Gedenkpause abgeschickt werden.
-- Skeeve
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
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
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
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
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
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
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.
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