Browserfenster. Da das Script aber die Adresse ist, die aufgerufen wurde, liegt es in seinem Aufgabenbereich, diese Inhalte zu liefern. Im obigen Script ist das so gelöst, dass das Script am Ende einfach einen Redirect (eine Weiterleitung) zu einer gewöhnlichen HTML-Datei durchführt. Diese Datei wird an den Browser gesendet. Der Form-Mailer ist so geschrieben, dass im Erfolgsfall, also wenn die Mail versendet wurde, eine andere HTML-Datei zurückgegeben wird, als im Fehlerfall. Die beiden Dateien werden am Beginn des Scripts in den Variablen $returnPage und $returnErrorPage definiert. Notieren Sie dort vollständige HTTP-URLs, auch dann, wenn die HTML-Dateien auf dem gleichen Server liegen wie das Form-Mailer-Script. Insgesamt benötigen Sie also: • eine HTML-Datei mit dem Formular, • das obige Form-Mailer-Script, gespeichert als ausführbare PHP-Datei, • eine HTML-Datei, die im Erfolgsfall nach Absenden des Formulars angezeigt wird, • eine HTML-Datei, die im Fehlerfall nach Absenden des Formulars angezeigt wird. Hier ein Beispiel-Set für die drei HTML-Dateien: Formular:
Feedback
Feedback
Erfolgsfall nach Absenden des Formulars
Feedback: Danke
Feedback: Danke!
Wir haben Ihre Nachricht erhalten und werden uns bei Klärungsbedarf an die von Ihnen angegebene Mailadresse wenden.
Fehlerfall nach Absenden des Formulars
Feedback: Danke
Feedback: Fehler!
Leider ist ein Fehler aufgetreten, und Ihre Formulardaten konnten nicht an uns gesendet werden.
Weitere Hinweise Das obige Form-Mail-Script ist prinzipiell für beliebige Formulare mit beliebig vielen Feldern geeignet. Nicht geeignet ist es für Formulare mit Datei-Upload-Feldern. Dazu müsste das Script nicht nur die POST-Daten auswerten, sondern auch die separat davon übersendeten Dateien. Es ist durchaus möglich, das Form-Mail-Script flexibler zu gestalten. Wenn Sie es beispielsweise für ein Formular einsetzen, in dem der Anwender seine Mailadresse in einem Feld
eingeben kann oder muss, können Sie im Script auch notieren: $mailFrom = $_POST['mail']; Beachten Sie jedoch, dass vorher stets eine Prüfung der Daten erfolgen sollte. In diesem Fall ist es vor allem wichtig, dass in $_POST['mail'] keine Zeilenumbruchzeichen enthalten sind, da bösartige Anwender auf diese Weise versuchen könnten, zusätzliche, Schaden anrichtende Mailheaderzeilen zu injizieren. Auf keinen Fall sollten Sie im obigen Form-Mail-Script die Variable $mailTo durch eine vom Anwender selbst bestimmbare Angabe ersetzen. Denn dadurch erschaffen Sie eine perfekte Spamschleuder. Die oben skizzierte Lösung für den Fehlerfall ist nicht sehr professionell. Üblich ist es in solchen Fällen, das Formular erneut anzuzeigen, mit den zuvor eingegebenen Daten vorzubelegen und eine gezielte Fehlermeldung auszugeben. Das würde jedoch weiteres Scripting erfordern. Das obige Beispiel sollte jedoch aus Verständnisgründen möglichst einfach sein. 8.7.2 Formulare in Datenbank speichern (PHP/MySQL) Formulardaten haben einen feldorientierten Aufbau, und alle gesendeten Daten des gleichen Formulars enthalten die gleichen Felddaten. Die optimale Form, solche Daten zu speichern, ist eine Tabelle. Die Felder des Formulars sind dabei die Spalten der Tabelle, und die einzelnen abgesendeten Formulare sind die Zeilen. Tabellenorientierte Datenbanksysteme wie MySQL, PostgreSQL, Oracle, usw. sind bestens geeignet, um solche Daten aufzunehmen. Gerade auch dann, wenn es sich um große Datenmengen handelt, also wenn sehr viele Formulare abgesendet werden. Das Beispiel dieses Abschnitts zeigt, wie Sie Kommentare zu Artikeln in einer Datenbanktabelle speichern können. Dabei kommt das