Der Martin: Formular tut nicht das was es tun sollte, oder bin ich blind

Beitrag lesen

...oder fehlt mir die grundsätzliche Ahnung?

zumindest das Verständnis für die wichtigen Details.

<form name="formular" action="mail.php" method="post" autocomplete="on">

...
</form>


>   
> Das ist mein html Formular, soweit ja logisch  
> Ich Frage nach Name, Mail und Adresse ab und lege diese in Variablen.  
  
äh, nein, mit Variablen passiert da noch nichts. Du fragst die Angaben in einem Formular ab und verschickst sie an den Server.  
  

> ~~~php

  <?php  

>     $Empfaenger = "mailadresse@xxxxxxxxxxxxxxxx.de";  
> 	$danke = "http://www.meine website.de";  
>     if($_REQUEST['submit']){

Fällt dir bis hier etwas auf? - Genau, dein Formular hat gar kein Feld mit dem Namen(!) "submit". Sicher, es hat einen Submit-Button. Der hat aber kein name-Attribut und tritt deshalb nicht in den Formulardaten auf.
Übrigens: Selbst wenn er einen Namen hätte, könnte er ebensogut fehlen, wenn das Formular nicht durch Klicken auf den Submit-Button abgeschickt wird, sondern normal durch Drücken der Enter-Taste.

Ergo: Dieser Teil der Abfrage ist Unfug, weil die Bedingung, die du da stellst, nie erfüllt ist. Lass diese Bedingung weg, ersetze sie allenfalls durch

if ($_SERVER['REQUEST_METHOD']=="POST")

Dann kann dir schon mal kein Spaßvogel das Script mit GET aufrufen und dadurch eine Nachricht verschicken.

Davon abgesehen frage ich mich sowieso, warum du $_REQUEST abfragst und nicht konkret $_POST. Dein Mail-Script würde die Daten also genauso dankbar annehmen und verarbeiten, wenn man sie per GET übermittelt. Ist das so gewollt? Glaube ich nicht.

echo"Bitte gehen Sie <a href="javascript:history.back();">
        zur&uuml;ck</a> und f&uuml;llen Sie alle Felder aus";

Och nööö - Umlaute verst&uuml;mmeln? Wer macht denn sowas ...
Auch die Schleife über alle Einträge in $_REQUEST zum Zusammenbauen des Nachrichtentexts ist ungünstig. Ich kann also _beliebig_ benamste Felder übergeben, wie ich gerade lustig bin.
Tipp: Das Konzept des Affenformulars könnte dich interessieren.

$Mailbetreff .= $_REQUEST['Betreff'];

Hast du ein Glück, dass PHP das Subject selbst noch rudimentär prüft, ansonsten würde diese Stelle dein Script zu einer tollen Spamschleuder machen. Was ist, wenn ich Betreff=Terminanfrage%0D%0ACC:%20somebodyelse@example.org übergebe?

mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: "
        .$_REQUEST['email']);
        echo "angekommen:        \n".$Mailnachricht;      }

Die Aussage "angekommen" ist völlig falsch. Erstens fragst du den Erfolg von mail() nicht ab. Und selbst wenn du es tun würdest, könntest du an dieser Stelle nur sagen, dass du die Nachricht zum Versand abgegeben hast. Ob sie wirklich versendet wird, geschweige denn ankommt, steht in den Sternen.

Aber passieren tut da nichts, habe mich dabei an die Anleitung von 1&1 gehalten.
Es wird die php Datei aufgerufen, diese soll ja zuerst die Mail versenden und dann soll Sie zur Startseite zurücklinken. Das zweite tut Sie aber die Mail wird nicht versendet :(

Warum überhaupt die Weiterleitung? Warum gibst du die Antwortseite nicht direkt durch mail.php aus?

So long,
 Martin

--
Früher habe ich mich vor der Arbeit gedrückt. Heute könnte ich stundenlang zusehen.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(