Hier geht es jetzt darum ein Formular per PHP als Email zu verschicken. Da sich im Web der UTF-8 Zeichensatz immer mehr als Standard durchsetzt, kommt es beim Benutzen der PHP mail() Funktion zu einigen unschönen Ausgabeproblemen der Umlaute und Sonderzeichen. Im Internet stößt man auf die abenteuerlichsten Lösungen, die auch alle ihre Berechtigung haben. Die hier gezeigte Lösung soll zu einem schnellen Ergebnis führen und dabei auch für den weniger PHP begabten Nutzer nachvollziehbar sein. Also kurz ein Formular erstellt.
<form id="form" action="form2email.php" method="post"> <label for="name">Name</label> <input id="name" name="name" size="25" type="text" /> <label for="email">Email</label> <input id="email" name="email" size="25" type="text" /> <label for="betreff">Betreff</label> <input id="betreff" name="betreff" size="25" type="text" /> <label for="nachricht">Nachricht</label> <textarea id="nachricht" cols="50" rows="6" name="nachricht"></textarea> <input id="submit" name="submit" type="submit" value="Formular senden" /> </form>
// Ausführen wenn Formular gesendet
if (isset($_POST["submit"]))
{
// Sammeln der Formulardaten
$an = "meine@email.de";
$name = $_POST['name'];
$email = $_POST['email'];
$betreff = $_POST['betreff'];
$nachricht = $_POST['nachricht'];
// Mailheader UTF-8 fähig machen
$mail_header = 'From:' . $email . "n";
$mail_header .= 'Content-type: text/plain; charset=UTF-8' . "rn";
// Nachrichtenlayout erstellen
$message = "
Name: $namen
Email: $emailn
Nachricht: $nachrichtn
";
// Verschicken der Mail
mail($an, $betreff, $message, $mail_header );
};
Der gezeigte Code löst das Umlautproblem durch Erweiterung des Mailheaders, mehr nicht. Ein schickes Webformular sollte natürlich mehr bieten. Als erstes gehört eine Validierung der Eingaben in das Formular. Dazu gibt es schicke auf jQuery basierende Javascript Lösungen. Hier ein Fundstück mit jQuery Formular-Validierungs-Plugins. Um sich vor Spammern zu schützen sollte man auch noch ein Captcha nutzen. Mein Favorit ist eindeutig das jQuery – s3Captcha.
Im Demo könnt ihr das Kontaktformular als Komplettpaket sehen, sprich mit Validierung und Captcha. Das Download Paket enthält neben der oben im Code gezeigten Variante auch dieses “ready to use” Komplettpaket. Wie immer gilt…bei Fragen fragen!
Ein echt gutes Kontakt Formular, sehr einfach zu bedienen und nur zu empfehlen. Vielen Dank an Rico
oha danke funktioniert auch super
Echt genial – das is schon ne ideal Lösung von einem Kontaktformular!
Vielen Dank.
hallo, kann mir einer sagen, was ich falsch mache?
http://s7.directupload.net/images/110404/zckdg3um.jpg
danke =)
habs hinbekommen =) danke für das script!
Ein Problem mit grafischen Captchas ist leider, dass die Seite dadurch nicht mehr barrierefrei ist. Hier sind Captchas besser, die Aufgaben wie “3+5=?” stellen. Außerdem lassen sich textbasierte Captchas auch leichter lokalisieren (l12n).
Hey,
ich bin gerade am rumprobieren mit deinem wunderbaren Skript, und habe zwei Fragen dazu:
1. Ist es möglich, eine zweite eMail (an den Verfasser der Nachricht) mit einer Eingangsbestätigung zu schicken und wenn ja, ist das sehr kompliziert?
2. Ich habe mir gerade um 13:01 selber eine eMail geschickt und im Zeitstempel steht leider 13:1 Uhr statt 13:01 Uhr. Wo liegt da der Fehler?
Ich würde auch $date = date(“d.m.Y – H:i”); nutzen, da schreibt er 13:01, dafür fehlt das um, stattdessen steht dann “am 25.05.2012 – 13:01 Uhr” in der Mail, um wäre schöner.
Danke!
Hab ein bisschen gesucht, bis ich auf dieses schicke Kontaktformular gestoßen bin. Danke dafür! Leider funktioniert die Umsetzung der Umlaute nur im Text der Nachricht und nicht im Betreff. Lässt sich da nochwas nachbessern //ganzliebfrag//?
Der Download funktioniert leider nicht mehr :/
Es gab einen bösen Crash, Downloads dürften wieder funktionieren
Ein sehr schönes Kontaktformular. Ich habe nur leider das gleiche Problem wie “basteln”. Woran kann das liegen?
Danke!
Ich würde dringend dazu raten, neben der jQuery-Validierung für den User auch eine Validierung der eingetragenen Daten via PHP empfehlen, um sich vor Hacker-Angriffen zu schützen.
Ansonsten gutes Tutorial.
Gebe ich dir absolut recht, serverseitige Verarbeitung von Formularen ist immer zu empfehlen, ich werde das bei Gelegenheit noch nachreichen.
Hallo,
irgendwie hat das Skript bei mir nicht funktioniert.
In der Datei “simple_form2email.php” steht “action = form2email.php” !
soll das nicht “action=simple_form2email.php” sein?
Ist das ein Fehler oder steckt was dahinter, was ich leider nicht darauf kommen kann ?
Bei der Datei “full_form2email.php” kriegen ich viele Fehler, z.B. Undefined index: name, email, Betreff, nachricht …
Im simple Beispiel muss natürlich der eigenen Dateiname, also simple_form2email.php im Actionfeld des Formulars stehen. Das war mein Fehler, ist in der Download Datei geändert. Vielen Dank für den Hinweis.