devno.com

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&uuml;ck</a> und f&uuml;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.

:, ,

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

Kommentar hinterlassen

Kalender

März 2010
M D M D F S S
« Feb    
1234567
891011121314
15161718192021
22232425262728
293031