Der Martin: Einfacher PHP-Formmailer nutzen

Beitrag lesen

Hallo,

auch wenn du es als arrogant empfindest, bewundere ich doch Jörgs Geduld.

erkläre mir doch bitte mal wie das Originalscript funktioniert,
z.B. wenn man auf den Submit-Button klickt.

Dann läuft erstmal ein gewöhnlicher HTML-Mechanismus ab: Formularversand:

<form action="" method="post">

Der Browser fasst die name/value-Paare aller Formularelemente zusammen, ruft das im action-Attribut des Formulars angegebene Script mit der Methode POST auf und übergibt ihm die Formulardaten. Da das action-Attribut hier ein Leerstring ist, wird es auf den Namen der aktuell geladenen Ressource ergänzt; das Script ruft quasi "sich selbst" wieder auf).

Der PHP-Teil, der dann vom Server ausgeführt wird, definiert zunächst ein paar Konfigurationsdetails, prüft dann, ob das Script überhaupt per POST aufgerufen wurde ...

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

... und übergeht die gesamte weitere Verarbeitung, wenn nicht. Dann wird halt wieder das Formular ausgegeben.

Ansonsten baut das Script zunächst ein paar Mail-Header zusammen (verwechsle bitte nicht Mail-Header und HTTP-Header) und initialisiert den Mail-Text zunächst als leeren String.

Dann läuft es durch die übergebenen POST-Daten ...

foreach ($_POST as $name => $wert)

... setzt von jedem übergebenen Pärchen Namen und Wert (mit Trennzeichen dazwischen) zusammen und hängt das an den Nachrichtentext an, der dadurch Schritt für Schritt aufgebaut wird. Dass das Script sogar jeden Eintrag noch daraufhin prüft, ob es ein Array ist (z.B. bei mehreren Checkboxen, die eine Gruppe bilden), übergehe ich hier mal.

Schließlich ruft das Script die PHP-Funktion mail() auf, übergibt ihr die Empfängeradresse und den Betreff aus dem Konfigurationsblock, den eben zusammengebauten Mailtext, und die eingangs generierten Mail-Header. Wenn der Aufruf von mail() scheitert, bricht das Script hier ab, andernfalls sendet es den HTTP-Header "Location:", der den Client veranlasst, eine ganz andere Seite aufzurufen (Redirect).

Schließlich endet das Script definiert mit exit, damit nicht auch im Gut-Fall wieder das leere Formular ausgegeben wird.

So. Und was hast du daran nicht verstanden? Das sind PHP-Grundlagen, würde ich sagen. Wenn du hier Verständnisprobleme hast und Jörg daher an deinem Grundwissen zweifelt, finde ich das absolut nachvollziehbar. Okay, die Art, wie er es formuliert hat, ist etwas zynisch, aber sonst wär's ja auch langweilig.

Und wenn du noch weitere Hilfe brauchst, dann werde bitte konkret:
 * Was genau hast du getan? Code?
 * Was passiert? Oder: Was passiert nicht?
 * Welche Ressource wird aufgerufen? (nicht "irgendein anderes Script"!)

So long,
 Martin

--
PCMCIA: People Can't Memorize Computer Industry Acronyms
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(