Der Martin: totaler PHP-Newbie braucht Hilfe. Formailer (mail()-Funktion) ?

Beitrag lesen

Hallo,

ich bin seit kurzer Zeit dabei PHP selber zu erlernen.

dann gewöhn dir bitte von Anfang an eine Sache an: Auch wenn's nur zum Probieren ist, nie den Sicherheits- oder Missbrauchs-Aspekt außer Acht lassen.

Um es besser verstehen zu können versuche ich, wenn es möglich ist, an praktischen Beispielen bestimmte Funktionen nachzuvollziehen.

Das ist als Teil der Lernstrategie in Ordnung; das Nachvollziehen und Ausprobieren von Beispielen sollte aber immer auch ergänzt werden durch Nachlesen in einschlägigen Quellen (z.B. dem PHP-Manual oder einem guten Online-Tutorial). Oder durch Diskussion des Versuchs in einem Fachforum. :-)

Nun habe ich einen ganz einfachen Formmailer anhand der mail()-Funktion, ohne jegliche Sicherheitsabfragen (z.B. ob die eingegebene E-Mailadresse richtig ist, ob das Formular aus gefüllt ist, ...), zu Versuchzwecken gebastelt.

Oh-oh.

Leider gelingt das versenden einer solchen E-Mail nur teilweise, da ich nur die definierten Daten:

$Empfaenger = 'E-Mailadresse des Empfängers';
$Subjec t= 'Post von ihrer Webseite';
$Mail_Inhalt = 'Sie haben folgende E-Mail erhalten...';

als Text-email erhalte aber nicht die im Formular ein gegebenen Daten.

Klar, du schreibst die Formulardaten ja auch nirgends in den Mailtext hinein.

<?php

$Empfaenger = 'E-Mailadresse des Empfängers';
$Subject= 'Post von ihrer Webseite';
$Mail_Inhalt = 'Sie haben folgende E-Mail erhalten...';
mail($Empfaenger, $Subject, $Mail_Inhalt);
?>

  
Bis hierher stellt dein Code ein in sich abgeschlossenes PHP-Script dar, das sofort beim Aufruf eine Mailnachricht mit fest vorgegebenem Betreff und Text an einen fest vorgegebenen Empfänger schickt.  
  
Wäre es nicht irgendwie schlauer, die Nachricht erst zu verschicken, wenn das ausgefüllte Formular abgesendet wurde? Und dann auch die Formulareingaben in den Mailtext zu schreiben?  
  

> <body text="#000000" bgcolor="#FFFFFF">  
  
Unabhängig von PHP: Du solltest dich zugunsten von CSS von den altertümlichen HTML-Attributen zur Darstellung trennen.  
  

> ~~~html

<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post" accept-charset="ISO-8859-1">  

> [...]  
> </form>  
> <input type="submit" value="Senden" />

Das geht natürlich nicht: Der Submit-Button muss innerhalb des Formulars stehen, sonst bewirkt er nichts. Außerdem hast du im DOCTYPE angegeben, dass du HTML 4.01 verwendest - warum dann hier plötzlich die XHTML-Notation?

Das Problem ist das, wenn jemand die Formularfelder (Name, E-Mail, Nachricht)ausfüllt und abschickt ...

Er kann sie gar nicht abschicken, weil der Submit-Button funktionslos ist. Der Mailversand erfolgt bei deinem Entwurf auch nicht beim vermeintlichen Absenden, sondern schon beim Aufruf des leeren Formulars.

Könnt ihr mir helfen und posten was der Fehler dabei ist?

Ein kapitaler Denkfehler. Du machst dir keine Vorstellung, in welcher Reihenfolge hier welche Schritte ablaufen müssen. Werde dir darüber bitte erstmal klar.

So long,
 Martin

--
why the heck do you jerk think, that wir ein doppelposting nicht bemerken, wenn you zwischendurch the sprache wechselst?
  (wahsaga)
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(