Frank: Bekomme keine Antwort vom explorer, aber vom Netscape

Hallo !!!!

Ich weiß ja das ich keine Ahnung habe, aber nervig finde ich das schon, dass jeder Browswer was anderes zu bemängeln hat.

Also ich habe folgendes Problem

Unter netscape kommt die mail an und im explorer nicht

table>
<form name="Formular" form action="formmail.php4" method="POST"  enctype="text/plain" onSubmit="return chkFormular()">

<input type="hidden" name="recipient" value="frank@libra-verlag.de">
<input type="hidden" name="subject" value="Aboformular">
<input type="hidden" name="Name/ Firma:" value="User">
<input type="hidden" name="Straße/ Nr. :" value="Straße">
<input type="hidden" name="PLZ/ Ort" value="Ort">
<input type="hidden" name="Email" value="Mail">

<tr>
<td align="right" >Name/ Firma:</td>
<td><input name="User" type="text" size="40" maxlength="40"  ></td>
</tr><tr>
<td align="right" >Straße/ Nr. :</td>
<td><input type="text" name="Straße"  size="40" maxlength="40"  ></td>
</tr><tr>
<td align="right" >PLZ/ Ort    :</td>
<td><input name="Ort" type="text" size="40" maxlength="40" ></td>
</tr><tr>
<td align="right" >Email :</td>
<td><input type="text" name="Mail"  size="40" maxlength="40"  ></td>

</tr>
</table>

<div style="position:absolute; top:130px; left:150px; ">
<input type="submit" value="Absenden"><input type="reset" value="Abbrechen">

</form>
</body></html>

Formmail

</head>
</body>
<?php
  $fmtResponse= implode("", file("response.htt"));
  $fmtMail= implode("", file("mail.htt"));
  foreach($HTTP_POST_VARS as $key=> $val) {
    $fmtResponse= str_replace("<$key>", $val, $fmtResponse);
    $fmtMail= str_replace("<$key>", $val, $fmtMail);
  }
  mail($HTTP_POST_VARS["recipient"], $HTTP_POST_VARS["subject"], $fmtMail);
  echo $fmtResponse;
?>

</body>
</html>

Wäre schön wenn sich mal wer dazu äussern würde !!!!

Noch einen schönen Tag

Frank

  1. Hallo Frank,

    es ist sehr schön, daß Du auch gleich den Quellcode beigelegt hast, nur leider fehlt das wahscheinlich entscheidende Stück, nämlich die Methode "chkFormular()". Ich vermute mal, daß da was Netscape-spezifisches drin ist, was der MSIE nicht unterstützt. Daher kommt es dann wahrscheinlich im MSIE zu einer Fehlermeldung und im NN eben nicht. Bei einer Fehlermeldung wird aber ein Javascript nicht zu Ende ausgeführt und es kommt nicht zu einem "return true;" dadurch denkt der Browser, daß die Formulareingabe fehlerhaft sei und schickt das Formular nicht ab.

    Sollte das Formular zwar abgeschickt werden aber nur nicht ankommen, dann liegt es möglicherweise daran, daß die "hidden"-Felder Namen haben, die eben keinen Variablen entsprechen. Auch da könnte ich mir vorstellen, daß beim Zusammenstellen des Abfragestrings ein Browser Probleme bekommen kann, obwohl dann eher der serverseitige PHP-Teil Schwierigkeiten bekommen könnte, wenn die Variablen einzeln angesprochen werden sollen.

    Also: Bei dem Atribut "name" nach Möglichkeit den Wert immer mit Buchstaben beginnen, immer klein schreiben und keine Sonder- oder Leerzeichen verwenden. Zahlen können vorkommen, abwer nicht am Anfang.

    Gruß
    Andreas Schigold

  2. So, hier noch das Script
    Die Anmerkungen zu "name" habe ich befolgt, hat sich aber nix
    geändert !

    <script type="text/javascript">
    <!--
    function chkFormular()
    {
    if(document.Formular.User.value == "")  {
    alert("Bitte Ihren Namen eingeben!");
    document.Formular.User.focus();
    return false;
    }
    if(document.Formular.Straße.value == "") {
    alert("Bitte Ihre Straße eingeben!");
    document.Formular.Straße.focus();
    return false;
    }
    if(document.Formular.Ort.value == "") {
    alert("Bitte Ihren Wohnort eingeben!");
    document.Formular.Ort.focus();
    return false;
    }
    }
    //-->
    </script>

    Mit bestem Dank

    Frank

    1. Da wuerde ich noch ein "return true;" am Ende des Javascripts (vor der letzten Klammer) reinschreiben, damit's weitergeht.

      Gruss, Mel

      1. Da wuerde ich noch ein "return true;" am Ende des Javascripts (vor der letzten Klammer) reinschreiben, damit's weitergeht.

        Das sehe ich auch so, Netscape 'vermutet' dann wohl standardmäßig ein 'true' als Rückgabewert. MSIE 'vermutet' wohl eher ein 'false'. Noch besser wäre, wenn man ein return erzwingen könnte.

        So würde ein C-Kompiler bei sowas auf alle Fälle meckern. Entweder gibt die Funktion nun was zurück oder nicht.

        Gruß,
        Andreas

        1. Schönen Dank für die Anmerkungen, aber es funktioniert immer noch
          nicht !!

          Aber ich glaube ich kann es noch ein wenig genauer beschreiben, vielleicht.

          <html>
          <head>
          <title>response.htt</title>
          <H1>Danke!</H1>
          Ihre Daten wurde an <recipient> verschickt.

          </body>
          </html>

          Der Explorer gibt schon garnicht <recipient> in der Ausgabe an
          sondern nur "Danke Ihre Daten wurde an verschickt.

          Wie gesagt, im Gegensatz zu netscape

          schönen Gruß

          Frank

          1. Hallo Frank,

            jetzt ist alles unklar.

            Also, um mal einen gemeinsamen Nenner zu haben.
            1. Formular -> Klick auf Senden - es geht erstmal weiter, richitg?
            2. formmail.php4 wird also abgearbeitet, richtig?
            3. Kommt die Mail denn an und stimmt nur die Anzeige hinterher nicht?

            So, in der ersten Mail hing das als formmail-Code mit dran:

            </head>
            </body>
            <?php
              $fmtResponse= implode("", file("response.htt"));
              $fmtMail= implode("", file("mail.htt"));
              foreach($HTTP_POST_VARS as $key=> $val) {
                $fmtResponse= str_replace("<$key>", $val, $fmtResponse);
                $fmtMail= str_replace("<$key>", $val, $fmtMail);
              }
              mail($HTTP_POST_VARS["recipient"], $HTTP_POST_VARS["subject"], $fmtMail);
              echo $fmtResponse;
            ?>
            </body>
            </html>

            steht das so dort drin? Ich hielt es ja für einen Tipfehler oder so, aber der Anfang ist natürlich schon etwas seltsam.

            Schönen Dank für die Anmerkungen, aber es funktioniert immer noch
            nicht !!

            Aber ich glaube ich kann es noch ein wenig genauer beschreiben, vielleicht.

            Ist das jetzt der Quellcode, den formmail.php4 zurückliefert? Oder ist das jetzt der Inhalt der Datei "response.htt"?

            <html>
            <head>
            <title>response.htt</title>
            <H1>Danke!</H1>
            Ihre Daten wurde an <recipient> verschickt.

            </body>
            </html>

            Vielleicht sollte man einfach mal die eine Zeile ändern:
            Ihre Daten wurde an <?=$recipient?> verschickt.

            Der Explorer gibt schon garnicht <recipient> in der Ausgabe an
            sondern nur "Danke Ihre Daten wurde an verschickt.

            Wenn ein Browser den Text <hasteNichtGesehen> bekommt, dann muß er ihn eigentlich ignorieren, denn es kann sich dabei um einen TAG handeln, den er noch nicht kennt.

            Wie gesagt, im Gegensatz zu netscape

            Das Problem ist ja sehr komplex. Sowas ist immer schwierig, nachzuvollziehen. Ich kann bei sowas immer nur empfehlen, vor den Stellen, wo es klemmt oder wo es klemmen kann, sich die Werte der wichtigsten Variablen ausgeben zu lassen. In Javascript einfach mit alert("Variable:"+variable) und in PHP mit echo "Variable:$variable";.

            Das verunstaltet zwar auf den ersten Blick die Seite, aber es ist ja nur zu Testzwecken. Dann muß man sich langsam vortasten und immerwieder testen.

            schönen Gruß

            Frank

            Schade, daß wir wahrscheinlich keinen Fehler so entdecken können, aber viele Fehler sind nur durchs Testen zu finden.

            Viel Erfolg trotzdem
            Andreas

      2. Da wuerde ich noch ein "return true;" am Ende des Javascripts (vor der letzten Klammer) reinschreiben, damit's weitergeht.

        Gruss, Mel

        Schönen Dank für die Anmerkung, hab ich gemacht, hilft aber nix

        Aber ich glaube ich kann es noch ein wenig genauer beschreiben, vielleicht??

        <html>
        <head>
        <title>response.htt</title>
        <H1>Danke!</H1>
        Ihre Daten wurde an <recipient> verschickt.

        </body>
        </html>

        Der Explorer gibt schon garnicht <recipient> in der Ausgabe an
        sondern nur "Danke Ihre Daten wurde an verschickt.

        Wie gesagt, im Gegensatz zu netscape

        Ich hab ja immer noch keine Ahnung, aber ich habe in meiner Einfalt gedacht, dass ich den Wert von <recipient> eindeutig bestimmt habe.

        schönen Gruß zurück,

        Frank

  3. use Mosche;

    <form name="Formular" form action="formmail.php4" [...]>

    ^^^^
    Du willst statt dessen schreiben:
       <form name="Formular" action="formmail.php4" [...]>

    use Tschoe qw(Matti);