Mit diesem Mailer-Skript kann man E-Mails zu einer angegebenen Adresse senden lassen. Dafür muss man entweder nichts tun, oder wenn man bestimmte Vorgaben hat, muss man das Skript noch etwas konfigurieren. Ich werde hier anhand einiger Beispiele versuchen zu erläutern, wie man diese Konfiguration vornimmt.
1. Die Vorüberlegungen:
1.1. Was kann das Skript bieten?
a) Wenn man möchte, dass bestimmte Formular-Felder zwingend ausgefüllt werden sollen, dann kann das Skript dafür sorgen, dass diese auch ausgefüllt werden.
b) Wenn man möchte, dass bestimmte Formular-Felder keinen interpretierbaren HTML-Code beinhalten dürfen, dann kann das Skript dies auch erzwingen.
c) Wenn man für ein bestimmtes Formular-Feld festgelegt hat, dass es ausgefüllt werden muss, dann kann man eine Fehlernachricht ausgeben lassen, wenn das Formular abgesendet wurde, das Feld aber nicht ausgefüllt wurde.
d) Wenn ein Fehler aufgetaucht ist, weil zum Beispiel ein benötigtes Feld nicht ausgefüllt wurde, dann kann man für die Felder, die eventuell schon ausgefüllt wurden, den Text nochmal anzeigen lassen, sodass der User nicht nochmal alle Felder ausfüllen muss, wenn nur ein einziger Fehler auftrat.
1.2 Der Konfigurationsbereich
Der Konfigurationsbereich befindet sich zwischen den Zeilen
/* *** *** * BEGINN Konfiguration * *** *** */
und
/* *** *** * ENDE Konfiguration * *** *** */
Zunächst muss man dem Skript mitteilen, an wen die E-Mail gesendet werden soll. Das tut man, indem man der Variablen
$Empfaenger die E-Mail-Adresse des Empfängers übergibt.
Damit der Empfänger in seinem E-Mail-Programm gleich sieht, dass er eine E-Mail von diesem Mailscript erhalten hat, trägt man eine aussagekräftige Überschrift in der Variablen
$Betreff ein.
Der Variablen
$strDelimiter übergibt man eine Zeichenfolge, die zwischen dem Formularfeld-Namen und der Eingabe in diesem Feld hinzugefügt werden soll. Vorgegeben ist
:\t , also ein Doppelpunkt und ein Tabulator.
Die E-Mail kann einen Text vor dem gesendeten Inhalt haben, und einen Text danach. Das erreicht man, indem man den Variablen
$strMailtextPrefix und
$strMailtextSuffix einen Wert (Text) übergibt. Will man das nicht, löscht man den Text zwischen den beiden Hochkommata.
Wenn das Formular abgesendet wurde und die E-Mail versandt wurde, kann es passieren, dass der User die Seite neu lädt (Reload). Dabei würde die E-Mail noch einmal gesendet werden, was auch missbraucht werden könnte. Daher leitet das Skript nach erfolgreichem Versand der E-Mail den Benutzer auf eine andere Seite weiter. Diese Seite muss ein kompletter URL sein, den man der Variablen
$LocationWhenMailWasSent übergibt.
1.3 Formularfelder
Jetzt überlegen wir uns, welche Formularfelder wir haben wollen und wir überlegen uns, welche Formularfelder ausgefüllt werden müssen und welche Felder kein interpretierbaren HTML-Code beinhalten dürfen.
Nehmen wir an, man benötigt drei Felder:
Name des Absenders, E-Mail-Adresse und einen Text.
Wir möchten, dass der Name und der Text zwingend ausgefüllt werden sollen und kein interpretierbaren HTML-Code beinhalten sollen.
Das Feld für die E-Mail-Adresse muss nicht ausgefüllt werden, aber wenn es ausgefüllt wurde, dann soll es kein interpretierbaren HTML-Code beinhalten dürfen.
Wir legen also die einzelnen Felder zwischen:
|
Quellcode
|
1
|
<form action="kontakt.php" method="post">
|
und
|
Quellcode
|
1
|
</form>
|
an:
1. Feld <input type="text" name="
NameDesAbsenders" value="" />
2. Feld <input type="text" name="
EmailDesAbsenders" value="" />
3. Feld <textarea name="
MailText"></textarea>
Im Konfigurationsbereich des Skriptes müssen wir nun noch die Anweisungen geben, was mit den einzelnen Feldern passieren soll.
Für das erste Feld wollten wir, dass es ausgefüllt wird und kein interpretierbarer HTML-Code eingeschleust werden kann.
Dafür übergeben wir dem Skript zuerst den Namen des Feldes:
|
PHP-Quelltext
|
1
|
$arrValues[0]['name'] = 'NameDesAbsenders';
|
Als nächstes müssen wir zwei Optionen setzen. (Eine alleine reicht nicht aus!)
Die erste Option ist, dass das Feld benötigt wird, also ausgefüllt werden soll. Daher setzen wir
|
PHP-Quelltext
|
1
|
$arrValues[0]['required'] = true;
|
Und es soll auch kein HTML genutzt werden können, also setzen wir die Option
|
PHP-Quelltext
|
1
|
$arrValues[0]['noHTML'] = true;
|
Für das Zweite Feld sähe das dann so aus:
|
PHP-Quelltext
|
1
2
3
|
$arrValues[1]['name'] = 'EmailDesAbsenders'; // Name des Feldes
$arrValues[1]['required'] = false; // Das Feld muss nicht ausgefüllt werden! Deswegen false!
$arrValues[1]['noHTML'] = true; // Es darf kein HTML benutzt werden, deswegen true!
|
das letzte Feld muss ausgefüllt werden und HTML darf auch nicht benutzt werden:
|
PHP-Quelltext
|
1
2
3
|
$arrValues[2]['name'] = 'MailText'; // Name des Feldes
$arrValues[2]['required'] = true; // Das Feld muss ausgefüllt werden! Deswegen true!
$arrValues[2]['noHTML'] = true; // Es darf kein HTML benutzt werden, deswegen auch true!
|
Wichtig ist zu erkennen, das jedes Feld eine Nummer hat, die bei 0 (Null) beginnt. Diese Nummer wird Index genannt, fängt bei 0 an und jedes weitere Feld bekommt die nächst höhere ganze Zahl. Also 0, 1, 2, 3 , usw. Es ist wichtig darauf zu achten, dass diese Reihenfolge eingehalten wird!
Nun fehlt noch der Absende-Button. Dieser sollte den Namen "senden" haben, da er sonst mit der E-Mail mitgesendet würde.
<input type="submit" name="
senden" value="..." />
2. Auf Fehler aufmerksam machen
Wenn der User nun vergessen hat seinen Namen einzutragen, aber einen langen Text geschrieben hat und das Formular dann absendet, dann wird die Mail nicht gesendet und das Formular wird erneut angezeigt. Nur leider weiß der User nicht, was passiert ist und warum ihm nun ein leeres Formular angezeigt wird. Der User wird sich fragen: "Wurde die Mail nun abgesendet oder nicht?".
In diesem Fall wäre es doch schön, wenn wir dem User zeigen könnten, in welchem Feld der Fehler aufgetaucht ist.
Dazu gibt es die Funktion
errorOutputIfExists(). Die Funktion erwartet mindestens einen Parameter. Und das ist der Name des Formularfeldes. Die Namen werden in einfachen Hochkommata angegeben.
In unserem Fall, indem also der User vergessen hat seinen Namen anzugeben, wollen wir anzeigen lassen, dass dort der Fehler aufgetaucht ist. Also schreiben wir vor dem Formularfeld
|
PHP-Quelltext
|
1
|
<?php errorOutputIfExists('NameDesAbsenders'); ?>
|
Nun wird ein Standard-Fehlertext "Fehler: " ausgegeben. Möchte man nicht, dass dort "Fehler: " vor dem Feld steht, kann man sich auch einen eigenen Fehlertext ausdenken und den mit einem Komma getrennt und in einfachen Hochkommata übergeben.
|
PHP-Quelltext
|
1
|
<?php errorOutputIfExists('NameDesAbsenders', 'Hier musst du deinen Namen angeben!'); ?>
|
Anstelle eines Textes kann man auch CSS-Code (oder auch HTML) übergeben, wenn man beispielsweise möchte, dass das Formularfeld dann einen roten Rand bekommt.
Beispielsweise so:
|
PHP-Quelltext
|
1
|
<input <?php errorOutputIfExists('NameDesAbsenders', 'style="border-color:#ff0000;"'); ?> type="text" name="NameDesAbsenders" value="" />
|
Man kann auch mehrere verschiedene Ausgaben für ein und das selbe Feld ausgeben. Beispielsweise den Fehlertext "Dieses Feld muss ausgefüllt werden!" und einen roten Rahmen:
|
PHP-Quelltext
|
1
2
|
<?php errorOutputIfExists('NameDesAbsenders', 'Dieses Feld muss ausgefüllt werden!'); ?>
<input <?php errorOutputIfExists('NameDesAbsenders', 'style="border-color:#ff0000;"'); ?> type="text" name="NameDesAbsenders" value="" />
|
3. Eingegebenen Text wieder herstellen
Der User wurde nun darauf aufmerksam gemacht, dass er vergessen hat das Feld mit seinem Namen zu versehen. Aber leider ist jetzt der ganze Text, den er schon geschrieben hat weg. Das ist nicht so berauschend, wenn man sich doch viel Mühe für den Text gegeben hat. Aber dafür bietet dieses Skript ja glücklicherweise eine Funktion an, die den Text wieder herstellt.
Die Funktion lautet
showStrValue() und erwartet als Parameter den Namen des Feldes.
In unserem Fall soll das Textfeld mit dem Mailtext wieder hergestellt werden, also schreiben wir
|
PHP-Quelltext
|
1
|
<textarea name="MailText"><?php showStrValue('MailText'); ?></textarea>
|
Wenn wir das gleiche auch für die anderen Felder tun wollen, dann muss die Funktion im Value-Attribut notiert werden. Beispiel:
|
PHP-Quelltext
|
1
|
<input type="text" name="EmailDesAbsenders" value="<?php showStrValue('EmailDesAbsenders'); ?>" />
|
Es empfiehlt sich das bei allen Eingabefeldern zu machen, die einen Text enthalten.
Noch Fragen? Dann her damit!
ronsn
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »ronsn« (25.10.2009, 21:38)