Einfaches Kontaktformular mit HTML und PHP
von devno am 20 Mrz 2009, unter Tutorial
Dies ist die verbesserte Version 2.0
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>Kontaktformular</title></head><body><div id="kontaktformular" style="width: 365px"><form action="kontakt.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"><div style="float:right;font-size: 50%; text-align: right">by <a href="http://www.devno.com">devno</a></div><div style="clear:both;"></div></form></div></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
In der ersten Zeile musst du noch deine E-Mail Adresse eintragen, damit auch du die E-Mail bekommst.
<?php$Empfaenger = "your.mail@example.com";?><html><head><title>Einfaches Kontaktformular mit HTML und PHP</title></head><body><?phpif($_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";$Mailnachricht .= "Name: ".$_REQUEST['name']."\n"."E-Mail: ".$_REQUEST['email']."\n"."Betreff: ".$_REQUEST['betreff']."\n"."Datum: ".date("d.m.Y H:i")."\n"."\n\n".$_REQUEST['text']."\n";$Mailbetreff = "Kontakt: ".$_REQUEST['betreff'];mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_REQUEST['email']);echo "Wir haben Ihre Anfrage erhalten und werden sie so schnell wie möglich bearbeiten. <br><a href=\"javascript:history.back();\">Zurück</a>";}}else{echo"Ein Fehler ist aufgetreten. Hier können Sie eine <a href=\"kontakt.html\">Anfrage</a> an uns senden.";}?></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.
Download
kontakt.php und kontakt.html in einem Archiv
Anleitung: Entpacken und anschließend in der Datei kontakt.php in der zweiten Zeile sein eigene E-Mail-Adresse angeben. Dann kontakt.php und kontakt.html auf den eigenen Server hochladen. Das Kontaktformular befindet sich in der kontakt.html, also diese Datei auf der eigenen Website verlinken.
Einbauen in die eigene Seite
Wenn man schon eine eigene Seite hat und das selbe Design auch bei dem Kontaktformular haben möchte, kopiert einfach nur ab <div id=”kontaktformular” … bis </div> vor dem Ende des Bodys in eure bestehende Seite.
kontakt.php muss trotzdem hochgeladen werden.
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!!!
März 29th, 2010 on 21:47
Hallo, ich habe den code in einfach in ein html dokument kopiert und den php code in ein anderes dokument mit der endung .php kopiert. bei mir kommt ständig eine fehlermeldung und es wird fast der komplette php code angezeigt. was ist da falsch?
danke
mit freundlchen grüßen jan weiland
Mai 20th, 2010 on 21:15
Heyho, klasse Tutorial, allerdings wüsst ich gern noch wie man die Ausgabe formatieren kann. Also das was dem User dann auf der Bestätigungsseite gezeigt wird. Bei mir komplett hässlicher Times New Roman Text ohne Absätze und ähnliches. Kannst du mir da auf die Sprünge helfen? Würd gerne CSSFormatierungen nutzten, aber weiss nicht wie und wo ich das im php Teil vermerken muss ^^
Mai 26th, 2010 on 18:57
Hallo,
ich habe das Script mit copy+paste verwendet, es dürften noch Fehler drinnen sein, da das Script in zwei Teilen dargestellt wird und vermutlich etwas verschwunden ist.
August 13th, 2010 on 22:39
es wäre sinvoll wenn die richtig eingegebenen Daten wieder da stehen würden.
mit einem value = “”
August 15th, 2010 on 11:36
Hey,
irgendwie funktioniert es bei mir nicht, habe meine e-mailadresse angegeben. Und als nachricht bekommt man auch das die mailgeschickt worden ist, aber sie kommt bei meiner e-mailadresse nicht an! Auch nicht im spam ordner!
LG Maxi
Oktober 16th, 2010 on 10:42
Hallo,
schönes Formular.
Ein kleiner Fehler ist noch im PHP.
Folgende Zeile:
$Mailbetreff .= $_REQUEST['Betreff'];
‘betreff’
ist in der HTML Datei klein geschrieben.
Demnach wird die Auswahl im Betreff nicht angezeigt.
MFG Simon
November 23rd, 2010 on 15:13
Hallo,
finde das Tutorial SUUUPER! Danke!
Zwei Fragen sind jedoch aufgetaucht:
1. Wie kann ich bestimmen, welche Felder Pflichtfelder sind?
2. Wo soll ich denn genau die folgende Zeile einfügen?
Ich bekomme die Meldung, dass ein Fehler in der Zeile 31 sei:
http ://www.oratorio-choir.com/kontaktformularverarbeitung.php
Wäre sehr dankbar über baldige Hilfe
Gregor
November 23rd, 2010 on 15:14
Die Fehlermeldung heißt: Parse error: syntax error, unexpected ‘<' in /homepages/41/d348050128/htdocs/kontaktformularverarbeitung.php on line 31
November 24th, 2010 on 17:40
Guten Tag,
In dem php Skript soll man bei Auftreten eines Fehlers auf eine Seite gehen; was ist das denn für eine Seite? Noch eine dritte Datei?
{
echo”Ein Fehler ist aufgetreten. Bitte gehen Sie auf diese
Seite.”;
}
Mfg tina
Dezember 2nd, 2010 on 01:02
Hallo,
das Formular wird angezeigt. Aber nach dem Abschicken erhalte ich immer eine Fehlermeldung: Error 403 forbidden. Zugriff nicht erlaubt. Die angeforderte Seite darf nicht angezeigt werden.
Gruß
Wolfgang
Juni 20th, 2011 on 13:36
Danke erstmal für das Formular, wirklich sehr einfach und nützlich.
Dennoch sind in den oben geposteten Dateien immer noch Fehler, es wäre toll, wenn die behoben werden könnten und (!) wenn die php-datei vielleicht als Download angeboten würde.
Spontan fiel mir noch auf:
„Sie haben folgende E-Mail an den den Administrator versant:“
muss lauten:
Sie haben folgenden E-Mail an den Administrator versendet (oder versandt):
Ich würde hier auch den Hinweis anbringen wollen, dass man so einen Hinweis im konkreten Fall anpasst und z.B. den tatsächlichen Namen des Empfängers reinschreibt. Administrator klingt so „trocken“…
Gruß
Christian
August 17th, 2011 on 13:51
Grüß dich,
danke für das Script.
Musste zwar einiges rumprobieren, aber am Schluss hat es tadellos funktioniert.
Wenn ich das alles selbst hätte lernen müssen, wär ich in 2 Wochen noch nicht fertig.
So musste ich nur logisch denken und alles in die richtige Reihenfolge bringen.
Funktioniert.
DANKE!
MfG
Zeiti