devno.com

Einfaches Kontaktformular mit HTML und PHP

von devno am 20 Mrz 2009, unter Tutorial

Dies ist die verbesserte Version 2.0

Zum Download springen
Demo

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>
<?php
if($_REQUEST['submit']){
if(empty($_REQUEST['name']) || empty($_REQUEST['email'])
|| empty($_REQUEST['text']))
{
echo"Bitte gehen Sie <a href=\"javascript:history.back();\">
zur&uuml;ck</a> und f&uuml;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&uuml;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

kontakt.zip

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.

Suchbegriffe:

kontaktformular php, kontaktformular html, php kontaktformular, html kontaktformular, kontaktformular html code, einfaches kontaktformular, html code kontaktformular, php kontaktformular tutorial, einfaches kontaktformular html, einfaches kontaktformular php, kontaktformular html php, einfaches php kontaktformular, Kontaktformular code, einfaches php formular, html kontaktformular php
:, ,

32 Kommentare für diesen Beitrag

  • Steffen

    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

  • devno

    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

  • Patrick

    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

  • devno

    Danke für die Hinweise, irgendwie haben sich Fehler bei den Dateien eingeschlichen.

  • chris

    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

  • devno

    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

  • serdal

    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

  • serdal

    hi,

    hab alles geschafft nur bekomme
    die gleiche meldung “gehen sie zurück und füllen…”?

    was mache ich falsch…

  • devno

    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.

  • serdal

    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

  • Silic

    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

  • devno

    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

  • Silic

    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

  • Mexican

    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.

  • devno

    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

  • Mexican

    @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?

  • devno

    Leider funktioniert das anzeigen von HTML Code in den Kommentaren nicht wirklich gut, schick mir doch eine email an admin@devno.com

  • Mexican

    habe es gemerkt (-; ….habe dir eine mail geschickt

  • eyJey

    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

  • devno

    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!!!

  • Jan Weiland

    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

  • Steven

    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 ^^

  • Christian

    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.

  • Milan

    es wäre sinvoll wenn die richtig eingegebenen Daten wieder da stehen würden.

    mit einem value = “”

  • Maxi

    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

  • Simon

    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

  • Gregor

    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

    • Gregor

      Die Fehlermeldung heißt: Parse error: syntax error, unexpected ‘<' in /homepages/41/d348050128/htdocs/kontaktformularverarbeitung.php on line 31

  • tina

    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

  • Wolfgang

    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

  • Christian

    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

  • Zeiti

    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

Kommentar hinterlassen

Du suchst etwas?

Verwende das Eingabefeld um die Seite zu durchsuchen