Formulare werden mehrfach gesendet

  • Moin,

    ich hab' ein kleines Problem mit dem Firfox 1.0.7 (de).

    Ich habe ein Formular dessen Daten mit der Methode POST an meinen Webserver (Apache/Tomcat 4.0.4) übergeben werden sollen:

    <form name="formularname" method="POST" action="auszuführendeAktion.do;jsessionid=ECT3IIQ:107rciqpm">

    ......

    <A HREF="javascript:document.forms[0].submit()" name="submit" onMouseOver="window.status='best&auml;tigen'; return true">Bestätigen</A>

    Jetzt beobachte ich, dass das Formular vom Firefox beim Klick auf "Bestätigen" gleichzeitig zweimal geschickt wird, und zwar einmal mit "POST" incl. der Formulardaten und einmal mit "GET" und da ohne Formulardaten, was bei der Weiterbearbeitung leider zu Fehlern führt.

    Dieses Verhalten tritt (leider) nicht immer auf, sondern sporadisch, ohne das zwischenzeitlich irgendetwas z.B. an der Browserkonfiguration geändert wurde.

    Hat irgendjemand eine Erklärung für dieses Verhalten?

    M.f.G
    Gerhard

  • Zitat von andandergerhard

    Jetzt beobachte ich, dass das Formular vom Firefox beim Klick auf "Bestätigen" gleichzeitig zweimal geschickt wird, und zwar einmal mit "POST" incl. der Formulardaten und einmal mit "GET" und da ohne Formulardaten, was bei der Weiterbearbeitung leider zu Fehlern führt.

    Das ist doch richtig, daß die POST Variablen nur mit dem Formlar weitergegeben werden. Wenn du beim Übergeben des Formular's auch GET Variablen mit übergeben willst, so bietet sich in dem Fall ein "hidden" Feld im Formular an, mit dem du dann die benötigten GET Variablen dann mit POST weitergeben kannst.

    Ich tippe bei dir eher auf das Javascript als auf den Fuchs,
    Vielleicht könntest das Formular mal posten, dann könnte man da genauer kucken.

    GET Variablen sind die Variablen, die in der URL mit übergeben werden:
    Beispie: action='index.php?kat=3'

    Übergeben wird hier kat = 3

    POST Variablen werden in Formularen weitergegeben, und sind in der URL nicht sichtbar.

    Ran kommst du an diese dann so, sofern bei deinem Server REGISTER GLOBALS auf Off steht,

    $varausdemformular = $_POST[varausdemformular];
    oder:
    $_GET[kat];

    Lies dir auch mal das Thema über POST und GET Variablen durch:
    hxxp://http://de3.php.net/register_globals

    Gruss

  • Zitat von fauli2001

    Das ist doch richtig, daß die POST Variablen nur mit dem Formlar weitergegeben werden. Wenn du beim Übergeben des Formular's auch GET Variablen mit übergeben willst, so bietet sich in dem Fall ein "hidden" Feld im Formular an, mit dem du dann die benötigten GET Variablen dann mit POST weitergeben kannst.

    Was mich wundert ist, dass nach dem POST überhaupt noch ein GET geschickt wird!
    Ich möchte nur den POST haben und den GET garnicht. Aber sporadisch schickt der Fox nach dem POST eben auch noch einen "leeren" GET, obwohl als Method nur POST angegeben ist.

    Beim IE (sorry ;) ) passiert das nicht, und wenn ich im FOX den "UserAgentSwitcher" nutze und dann quasi als IE arbeite passiert's auch nicht !?

    Gruß Gerhard

  • Was ich dir anbieten könnte ist, daß du mir oder auch allen, den quelltext mal postest bzw. zur Verfügung stellst, dann könnte man gezielt nach dem Fehler suchen. So aus dem Brauch zu analysieren ist schwierig.

    Klar ist, hab eben nochmal kräftig überlegt: Das es irgendwo in deinem Quelltext ein GET Variable geben muss, die leer ist.

    Müsstes dann aber wohl bis Anfang nächste Woche warten, werde wohl an diesem WE nicht zu Hause sein.

    Grüsse

  • Zitat von fauli2001

    Was ich dir anbieten könnte ist, daß du mir oder auch allen, den quelltext mal postest bzw. zur Verfügung stellst, dann könnte man gezielt nach dem Fehler suchen. So aus dem Brauch zu analysieren ist schwierig.

    Klar ist, hab eben nochmal kräftig überlegt: Das es irgendwo in deinem Quelltext ein GET Variable geben muss, die leer ist.

    Müsstes dann aber wohl bis Anfang nächste Woche warten, werde wohl an diesem WE nicht zu Hause sein.

    Grüsse

    Sorry, hatte das etwas aus den Augen verloren.
    Inzwischen weiß ich woran's liegt. "Schuld" ist die Erweiterung "HTML Validator".
    Ist dieser enabled führt er anscheinend nach dem "regulären" POST nochmal einen GET durch um sich zum validieren die Seite nochmal aktuell zu holen.

    Auszug aus dem "Live HTTP header":
    #request# POST http://home.arcor.de/cgi-bin/formmail
    POST /cgi-bin/formmail email=xyz%40arcor.de&url=http%3A%2F%2Fhome.arcor.de%2Fxyz%2Fhaupt_home.html&Betreff=test&email=abcde%40web.de&homepage=http%3A%2F%2F&Text=testtest
    #request# GET http://home.arcor.de/cgi-bin/formmail

    Jedenfalls tritt das Phänomen nicht mehr auf wenn ich den Validator disabled habe.

    Auf jeden Fall Danke für die Reaktionen und nochmal sorry, dass ich erst jetzt darauf reagiere.

    Viele Grüße aus HH[/code]