Wenn das Formular abgeschickt wurde, dann sollte man es auf Fehler untersuchen.
Manche machen sich sogar einen Spaß daraus, unausgefüllte Formulare abzusenden.
Und was hast Du davon - einen vollen Briefkasten welcher Dir nicht nützt.
Um solchen Dingen entgegen zu wirken erstellen wir die Datei pruefe-email.php.
Daten aus dem Formular müssen wir nun nicht mehr importieren, dies haben wir bereits in der Datei email.php erledigt.
Und so bleibt Folgendes:
<?php
// --- Variable zum Fehler sammeln ---
$fehler_angaben = array("0"=>"<p align=center>Bei der Prüfung des Formulares sind Fehler aufgetreten, prüfe daher noch einmal:</p>\n");
// --- Fehler suchen ---
if(strlen($name) <= '4') // --> prüft den Namen ob er mindestens 4 Zeichen enthält
{
$fehler_name = "<center>Deinen Namen</center>\n";
array_push($fehler_angaben,$fehler_name);
}
if(strlen($email) <= '7') // --> prüft die E-Mail ob sie mindestens 8 Zeichen enthält
{
$fehler_email = "<center>Deine E-Mail</center>\n";
array_push($fehler_angaben,$fehler_email);
}
else
{
if(strstr($email,"@") && strstr($email,".")) // --> E-Mail hat 8 Zeichen, gibt es auch @ und .?
{ }
else
{
$fehler_email = "<center>Deine E-Mail</center>\n";
array_push($fehler_angaben,$fehler_nameemail);
}
}
if($betreff == 'Bitte auswählen') // --> prüft ob der Betreff verändert wurde
{
$fehler_betreff = "<center>Deinen Betreff</center>\n";
array_push($fehler_angaben,$fehler_betreff);
}
if(strlen($nachricht) <= '9') // --> prüft die Nachricht ob sie mindestens 10 Zeichen enthält
{
$fehler_nachricht = "<center>Deine Nachricht</center>\n";
array_push($fehler_angaben,$fehler_nachricht);
}
// --- Fehlermenge feststellen ---
$fehler_anzahl = count($fehler_angaben);
if($fehler_anzahl >= '2')
{
// --- Es gab Fehler in der Eingabe - noch einmal das Formular ---
// --- Dieses Mal existieren alle Variablen - nichts neu bestimmen ---
@include_once "privates/kontakt/formular.php";
}
else
{
// --- Beim User bedanken und nochmal E-Mail anzeigen ---
echo "<h1>E-Mail senden</h1>\n";
echo "<p>Vielen Dank für das Ausfüllen meines Formulars.</p>\n";
echo "<p>Deine E-Mail mit folgendem Inhalt wird zum Senden vorbereitet.</p>\n";
echo "<p>Dein Name: $name</p>\n";
echo "<p>Deine E-Mail: $email</p>\n";
echo "<p>Dein Betreff: $betreff</p>\n";
echo "<p>Deine Nachricht:</p>\n";
echo "<p>$nachricht</p>\n";
// --- E-Mail vorbereiten ---
$to = "Deine@email.adresse"; // --- HIER MUSS DEINE E-MAIL ADRESSE HIN!!! ---
$subject = "$betreff (vom Homepageformular)"; // --- ( ) damit Du weißt, dass die Email von der HP kommt
$message = "$nachricht\nBetreff:$subject\nName:$name\nE-Mail:$email";
$header = "From: $email\r\n"; // --- wichtig: \r\n!!!
// --- E-Mail senden ---
if (@mail($to,$subject,$message,$header))
{
echo "<p>Ihre E-Mail wurde gesendet</p>\n";
}
else
{
echo "<p>Ihre E-Mail konnte auf Grund eines unerwarteten Fehlers nicht gesendet werden.</p>\n";
echo "<p>Bitte versuchen Sie es später noch einmal.</p>\n";
}
}
?>
Erläuterungen:
Mit "if(strstr($email,"@"))", genauer mit "strstr", sucht man nach einem bestimmten Wert in einer Variablen (hier nach "@"), wenn er vorhanden ist, dann ist die Abfrage wahr (TRUE), anderenfalls FALSE (nicht wahr).
Mit "array_push" fügt man Werte an eine Variable an, was wir hier zur Fehleraufbereitung nutzen, wobei der zweite Wert an den Wert 1 angefügt wird (Funktion array_push (Wert1 <- Wert 2)).
Mit "$fehler_anzahl = count($fehler_angaben);" stellen wir die Fehlermenge fest, count zählt die Werte des Array´s. Nicht verwechseln mit array_sum, was die Werte addiert.
Mit "if (@mail($to,$subject,$message,$header))" senden wir die E-Mail. Die Abfrage dient zum Auswerten, ob "mail" TRUE ist (das Senden funktioniert hat).
Ist "mail" gleich TRUE, so wird dieser Zweig ausgegeben, anderenfalls der ELSE-Zweig.
Das "@" vor "mail" dient wieder der Abschaltung der PHP-Fehlermeldungen.
Wichtig bei der Bestimmung der Variablen zum Versenden: "\r\n" in der Variablen $header!
So, und das war´s nun zum Thema E-Mail versenden.
Natürlich gibt es hier auch noch andere Varianten zum Senden - aber für den Anfang reicht das.
Auch die E-Mail Adresse geht noch anders und schärfer zu kontrollieren, was man mit einer Anfrage an einen bestimmten Server erledigen kann - was aber Zeit kostet und dann ist nur eine bestimmte Anzahl an Anfragen möglich.
Was bleibt mir jetzt noch - na viel Spaß und Freude mit der Kontaktseite zu wünschen.