Einfaches Kontaktformular mit HTML und PHP
von devno am 20 Mrz 2009, unter Tutorial
In diesem Tutorial möchte ich euch zeigen wie man ganz einfach ein Kontaktformular erstellt, welches anschließend dem Webmaster eine E-Mail mit den eingegeben Daten schickt. Wir werden das Formular selber mit HTML schreiben und um die Daten anschließend zu verarbeiten verwenden wir PHP.
HTML Kontaktformular
<html>
<head>
<title>Einfaches Kontaktformular mit HTML und PHP</title>
</head>
<body>
<form action="kontaktformularverarbeitung.php" method="post">
Name: <input name="name" size="40"/><br />
E-Mail: <input name="email" size="40"/><br />
Betreff: <select name="betreff"size="1">
<option>Hilfe</option>
<option>Kritik</option>
<option>Linktausch</option>
<option>Werbung</option>
<option>Sonstiges</option>
</select><br />
Nachricht: <br />
<textarea name="text" cols="50" rows="10"></textarea>
<br />
<input name="submit" type="submit" value="absenden"/>
</form>
</body>
</html>
Mit diesem HTML-Code haben wir eine Seite erstellt, welche einen Titel hat und ein Formular mit Eingafeldern enthält. Außerdem haben wir beim Betreff ein Auswahlbox erstellt und somit kann der Besucher einfach auswählen, warum er Kontakt aufnehmen will. Jetzt benötigen wir noch ein PHP-Skript, an das die eingegeben Daten geschickt werden und welche wir dann verarbeiten und an unsere E-Mail Adresse schicken.
PHP Skript zum Verarbeiten der Daten
<html>
<head>
<title>Einfaches Kontaktformular mit HTML und PHP</title>
</head>
<body>
<?php
$Empfaenger = "ihre.mail@mail.com";
if($_REQUEST['submit']){
if(empty($_REQUEST['name']) || empty($_REQUEST['email'])
|| empty($_REQUEST['text']))
{
echo"Bitte gehen Sie <a href=\"javascript:history.back();\">
zurück</a> und füllen Sie alle Felder aus";
}
else{
$Mailnachricht="Sie haben eine Anfrage über ihr
Kontaktformular erhalten:\n\n";
while(list($Formularfeld, $Wert)=each($_REQUEST))
{
if($Formularfeld!="submit")
{
$Mailnachricht .= $Formularfeld.": ".$Wert."\n";
}
}
$Mailnachricht .= "\nDatum/Zeit: ";
$Mailnachricht .= date("d.m.Y H:i:s");
$Mailbetreff = "Kontakt: ";
$Mailbetreff .= $_REQUEST['Betreff'];
mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: "
.$_REQUEST['email']);
echo "Sie haben folgende E-Mail an den den Administrator versant:
\n".$Mailnachricht; }
}
else
{
echo"Ein Fehler ist aufgetreten. Bitte gehen Sie auf diese
<a href=\"kontaktformular.php\">Seite</a>.";
}
?>
</body>
</html>
Das Skript prüft am Anfang, ob die Variable Send übergeben wurde. Damit wird sichergestellt, dass die PHP-Datei nicht einfach so aufgerufen werden kann, sondern nur per Submit von dem Formular. Als nächstes wird die Vollständigkeit der eingegebenen Daten überprüft. Anschließend wird nur noch die E-Mailnachricht erstellt, welche wir als Webmaster erhalten.
Mit dieser einfachen Möglichkeit könnt ihr euren Besuchern eine konfortable Möglichkeit bieten, mit euch in Kontakt zu treten. Denn viele Internetuser verwenden lieber vorgefertigte Formulare, als selbst E-Mails zu verfassen.
Hier noch die html Datei (Rechtsklick: Ziel speichern unter…)
kontaktformular
Die PHP-Datei mit dem Namen kontaktformularverarbeitung.php anlegen (Achtung falls die Endung .php.txt ist .txt löschen) und den Obenstehenden Code einfügen.
März 20th, 2009 on 02:11
Ola!
Es hat sich als sinnvoll erwiesen, dem Nutzer mehr, als eine einfache Rückmeldung zu geben, dass seine Anfrage gesendet wurde.
Ich zeige dem Nutzer z.B. eine Kopie der an mich gesendeten Email. So in der Art – Sie haben folgende Email an mich gesendet. Damit kann man unnötige Doppelemails vermeiden.
Statt den Nutzer per javascript zurück zum Formular zu schicken, kann man auch relativ unkompliziert (anstelle des Mailversands) das Formular mit den empfangenen Werten anzeigen und den Fehler markieren.
Mitunter “verlieren” Browser beim Rückwärts gehen nämlich die Formulardaten und wer fragt schon gern zweimal das Gleiche…
Mit hanfigen Grüßen
Steffen
März 20th, 2009 on 08:23
Hallo Steffen,
danke für deine nützlichen Tipps. Die Idee mit der versanten E-Mail finde ich gut und werde ich auch gleich in das Skript einbauen.
Die Tatsache dass manche Browser Informationen beim Zurückgehen verlieren ist leider richtig, aber ich werde die Form trotzdem nicht mehr in die PHP Datei einbauen. Denn ich denke, dass würde das Beispiel für Anfänger zu unübersichtlich machen. Natürlich wäre auch eine Kontrolle mit JavaScript denkbar und wahrscheinlich auch die beste Lösung für den Besucher.
Gruß,
devno
November 13th, 2009 on 23:27
Hi, ich wollt nur mal bescheid sagen das das skript an sich spitze ist, allerdings gibts ein paar macken im code selbst.
Zum einen steht im php teil $emfpaenger statt $empfaenger.
Zum anderen stimmen die Formular Namen mit denen des php teils net überein, statt Submit zb Send
Ansonsten eine super sache ;D
November 14th, 2009 on 16:06
Danke für die Hinweise, irgendwie haben sich Fehler bei den Dateien eingeschlichen.
Dezember 21st, 2009 on 01:51
Hi,
schönes Script. Allerdings funktioniert es nicht richtig.
Bekomme immer die Meldung “Bitte gehen Sie zurück und füllen Sie alle Felder aus ”
Dabei hab ich alles ausgefüllt
Weiss einer Rat?
Danke schonmal
Dezember 21st, 2009 on 13:28
Hallo,
in der angehängten Datei hat sich ein kleiner Fehler eingeschlichen und zwar wurde das Feld “nachricht” anstatt von “text” geprüft. Wurde ausgebessert und sollte jetzt funktionieren.
Lg,
devno
Dezember 24th, 2009 on 00:29
hi wie muss ich die php datei abspeichern …?
kannst du mir das genauer erleutern?
bin ein anfänger
das formular und so hab ich hochgeladen wenn ich was abschicken will komm da fehler 404 seite nicht gefunden oder so…?
mfg
serdal
Dezember 24th, 2009 on 11:40
hi,
hab alles geschafft nur bekomme
die gleiche meldung “gehen sie zurück und füllen…”?
was mache ich falsch…
Dezember 24th, 2009 on 15:00
Du musst einfach die Endung .txt bei der PHP-Datei entfernen, diese ist nur da damit man sie im Internet betrachten kann. Anschließend alles ins selbe Verzeichnis hochladen und dann sollte es funktionieren.
Dezember 24th, 2009 on 15:59
hi,
hab ich ja gemacht… also als php abgespeichert und als html aber wenn ich das kontaktformular nutzen will kommt dann komplett die html ansicht also die codes…?
leider bin ich blind … kannst du mir das genauer schildern…
mfg
Januar 12th, 2010 on 14:26
Hallo,
hab das jetzt alles so weit hin bekommen aber ich bekomm keine email.
Hat jemand eine lösung für mich
vielen dank
mfg
Januar 12th, 2010 on 16:09
Hallo,
falls es bei dem Aufruf der PHP-Datei zu irgendwelchen Fehlern kommen sollte, schreib sie doch bitte hier rein, vielleicht kann ich dir dann helfen. So kann es an vielen verschiedenen Sachen liegen, allerdings habe ich auch schon eine Vermutung.
Vielleicht hast du einfach nur im PHP-Skript vergessen die E-Mailadresse durch deine zu ersetzten.
$Empfaenger = “admin@devno.com”
Gruß,
devno
Januar 12th, 2010 on 18:28
Erst mal thx für deine schnelle antwort
ne hab bis jetzt zum teste nur meine email geändert und den rest erst mal so gelassen.
Kann es iwie sein das ich auf der seite noch iwo meine addres hinterlegen muss
Silic
Februar 1st, 2010 on 18:55
Super Sache das Script, vielen Dank für die Mühe. Habe aber noch folgende Frage: Ich will nachdem ich das Formular bestätige, eine direkte Weiterleitung auf meine Kontakt.html. Denke man muss etwas an folgender PHP-Line änder, weiß aber nicht was.
—————————————–
echo “Sie haben folgende E-Mail an den den Administrator versand: \n”.$Mailnachricht;
——————————————
Danke für die Antwort im vorraus.
Februar 1st, 2010 on 20:10
Hallo das ist natürlich einfach möglich. Einfach bei der von dir angesprochenen Zeile folgendes einfügen.
<meta http-equiv=”refresh” content=”5; url=kontakt.html”>
Die Zahl steht dabei für die Anzahl der Sekunden, wenn zu der anderen Seite umgeleitet werden soll. In diesem Fall wären das 5 Sekunden
Februar 2nd, 2010 on 08:38
@devno: Danke für die rasche Antwort. Habe nun folgende Zeile eingefügt
————————————-
echo ;
——————————————
Bekomme immer eine Fehlermeldung wenn ich das so nehme. Habe ich da irgendwo eine Syntax-Fehler?
Februar 2nd, 2010 on 09:44
Leider funktioniert das anzeigen von HTML Code in den Kommentaren nicht wirklich gut, schick mir doch eine email an admin@devno.com
Februar 2nd, 2010 on 14:56
habe es gemerkt (-; ….habe dir eine mail geschickt
Februar 22nd, 2010 on 19:46
Hi,
vielen Dank für das Formular. Leider klappt es auch bei mir nicht. Ich bekomme diese Fehlermeldung:
Parse error: syntax error, unexpected T_IF in /var/www/web34/html/test/kontaktformularverarbeitung.php on line 8
Was mach ich falsch? Habe den Code nur rein kopiert. Sollte doch klappen. Danke
Februar 22nd, 2010 on 20:23
Danke für den Hinweis in der Zeile 8 fehlt hinter dem Befehl ein Strichpunkt. Der Fehler ist jetzt ausgebessert.
Bitte Alle darauf achten, dass sie die E-Mail Adresse ändern!!!