Individuelles Kontaktformular mit Captcha in PHP

Kontaktformulare sind das Mittel der Wahl, um es dem Besucher besonders leicht zu machen, direkt mit dem Webmaster zu kommunizieren.

Doch wer sich nicht PHP-Kenntnisse, mit Tutorials wie diesem, aneignen möchte, hat ein Problem: Wie soll nun ein Kontaktformular realisiert werden?

In diesem Beitrag biete ich dafür die Lösung. Hier kannst Du mein Skript downloaden, welches Dir mehrere Möglichkeiten bietet. Du kannst selber Pflichtfelder festlegen und selbst entscheiden, welche Felder es überhaupt geben soll.

Außerdem gibt es auf dieser Seite sowohl ein Kontaktformular-Skript mit Captcha als auch eines ohne. Es kann also ausgewählt werden, ob Du mit dem Captcha zusätzliche Sicherheit vor Spam haben möchtest oder es Deinen Besuchern besonders leicht machen möchtest zu Dir Kontakt aufzunehmen – ohne Captcha.

Selbstverständlich können auch die angezeigten Text und das Layout an den Stil deiner Website angepasst werden. Also, worauf wartest Du? Lass uns dein neues Kontaktformular gestalten.

Werbung

Features der Lösung

Hier noch einmal der Überblick, was das Skript leisten kann:

  • eigene Felder festlegen und entscheiden, ob diese Pflichtfelder sein sollen
  • Integration in die eigene Website problemlos möglich
  • Spamschutz mit verstecktem Formular-Feld
  • Optionaler Spamschutz mit einem PHP-Captcha von WWW Coding, welches auf Deinem Server eingerichtet wird
  • Bei falschen Angaben müssen nicht alle Daten erneut eingegeben werden
  • Festlegen individueller Texte, die je nach Fall angezeigt werden können
  • kostenlos und frei verwendbar

Download des Kontaktformular-Skriptes

Wie schon zuvor angedeutet gibt es zwei Versionen dieses PHP-Skriptes.

Download Button
Download: Kontaktformular mit Captcha

Die erste Version beinhaltet sowohl die kontakt.php, das Kontaktformular, als auch den Ordner captcha, indem sich die für das Captcha notwendigen Dateien befinden. Entscheide dich für diese Lösung, wenn Du ein Kontaktformular inklusive Captcha möchtest. Hier, oder per Klick auf den Button links, kannst Du das Kontaktformular-Skript in dieser Version downloaden.

Download Button
Download: Kontaktformular ohne Captcha

Dich stört das Eingeben eines Captchas und Du willst Deine Besucher damit nicht belästigen? Das Kontaktformular verfügt bereits über einen recht einfachen Spamschutz, auch wenn dieser nicht so sicher ist, wie die Verwendung eines Captchas. Klicke hier, oder auf den Button links, um das Kontaktformular in der Ausführung ohne Captcha zu downloaden.

Sobald Du die Dateien gedownloadet hast, können wir mit der Einrichtung beginnen. Diese unterscheidet sich bei den beiden Versionen nicht wesentlich.

Einrichtung des Kontaktformulars

Nach Durchführung der folgenden Schritte ist dein Kontaktformular fertig eingerichtet. Bitte beachte bei der Captcha-Version, dass die so_gehts.php in diesem Fall ignoriert werden kann. Nur die folgenden Schritte sind maßgeblich:

  1. Dateien auf deinen Server laden
    Zuerst solltest Du die ZIP-Datei entpacken und alle enthaltenen Dateien auf den Server laden. Funktioniert es so, wenn Du die kontakt.php im Browser aufrufst? Okay, dann kann es weitergehen.
  2. Zeichensatz
    Verwendest Du UTF-8? Dann musst Du soweit keine Änderungen in der Datei vornehmen. Wenn Du dir nicht sicher bist, durchsuche einfach die anderen Dateien deiner Website nach Stichworten wie „utf8“ oder „utf-8“. Solltest Du kein UTF-8 verwenden, so musst Du die erste Zeile komplett entfernen (Version ohne Captcha) bzw. diese Zeile in der Version mit Captcha:

    header('Content-Type: text/html; charset=utf-8'); /* WENN DU KEIN UTF-8 NUTZT, KANNST DU (NUR) DIESE ZEILE LÖSCHEN! */
  3. Inhalt vor das Kontaktformular einfügen
    In der kontakt.php findest Du folgenden HTML-Kommentar:<!-- Hier kann der Inhalt deiner Seite vor das Kontaktformular platziert werden -->Ersetze diese Zeile durch deinen HTML- und/oder PHP-Code der davor angezeigt werden soll. Das sollte neben DOCTYPE und head-Elementen zum Beispiel auch dein Header sein.
  4. Inhalt hinter das Kontaktformular einfügen
    Bei der Gelegenheit kannst Du auch gleich den zweiten Kommentar in der letzten Zeile der Datei durch den Code ersetzen, der hinter das Formular platziert werden soll.
  5. E-Mail-Adresse festlegen
    Damit Du die E-Mails auch erhältst, solltest Du in der Variable $adminMail deine korrekte E-Mail-Adresse speichern. An diese Adresse werden alle Anfragen geschickt.
  6. Texte anpassen
    Außerdem hast Du die Möglichkeit alle angezeigten Texte anzupassen. Ändere dafür einfach die Inhalte der Variablen für die Überschrift ($formTitle), den Informationstext ($msgInfo), den Fehler-Hinweis ($msgError) und die Erfolgsmeldung ($msgSent).
  7. Captcha einrichten
    Dieser Schritt richtet sich nur an die Nutzer, die die Version mit Captcha heruntergeladen haben. Diese müssen in $captchaPath den Pfad von der aktuellen Datei zu der captcha.php aus dem captcha-Ordner angeben. Wenn Du nichts verändert hast und die Dateien so in das Hauptverzeichnis Deines Servers geladen hast, kannst Du die Variable in der Regel so belassen („captcha/captcha.php“).
  8. Formularfelder anpassen
    In der Variable $fields sind alle Elemente enthalten, die im Formular angezeigt werden soll. Du kannst diese Elemente verändern, entfernen (z.B. durch Auskommentieren wie bei dem Eintrag „Website“), oder neue hinzufügen. Dabei gilt folgendes Schema:'Feldname' => array('TYP', Pflichtfeld?, evtl. Ergänzungen)Der Typ kann entweder select, text oder textarea, checkbox sein. Ist der 2. Wert („Pflichtfeld?“) true, handelt es sich um ein Pflichtfeld, bei false ist das Ausfüllen optional. Bei einem select-Feld muss der 3. Eintrag des Arrays außerdem ein weiteres Array beinhalten mit allen Auswahlmöglichkeiten. Für eine Checkbox kann der daneben angezeigte Text ebenfalls über den 3. Eintrag des Arrays festgelegt werden.
  9. CSS anpassen
    Die einzelnen Bezeichnungen sind bereits mit der CSS-Klasse contactSubject und die Felder mit contactField gekennzeichnet. Damit kannst du dein Kontaktformular mit CSS noch leichter anpassen.
  10. Fertig!
    Sobald Du die Änderungen übernommen hast und die Dateien erneut auf deinen Webspace hochgeladen hast, bist Du in der Regel fertig. Wenn du alles korrekt gemacht hast, kannst Du dein Kontaktformular jetzt im Browser per kontakt.php erreichen. Probiere es doch gleich mal aus.

Du bist der Meinung alles richtig gemacht zu haben, aber es funktioniert nicht alles, wie es soll? Dann hinterlasse doch einfach einen Kommentar, wenn Dein Problem eventuell auch andere betreffen könnte.

Ansonsten wünsche ich Dir viele interessante und hilfreiche Anfragen über Dein neues Kontaktformular. Das, wie Du ja siehst, ganz einfach mit PHP und mit oder ohne Captcha realisiert werden kann.

Freie Verwendung

Aufgrund von Nachfragen weise ich gerne darauf hin, dass das Skript kostenfrei auch für gewerbliche Zwecke verwendet werden darf. Ich bitte darum die Kommentarzeilen nicht zu entfernen.

Gern gesehen (aber freiwillig) ist natürlich eine Empfehlung oder ein Link, wenn ihr mit dem Kontaktformular-Skript zufrieden seid 🙂

Changelog

  • 28.04.2014: Erste Version des Skripts wurde veröffentlicht
  • 30.06.2014: Nun ist auch das Einfügen von Checkboxen möglich
  • 21.10.2015: Bugfix, Checkboxen konnten bisher nur in der Version ohne Captcha eingefügt werden
  • 06.02.2016: Aktualisierte Version des Captchas übernommen
  • 17.05.2016: Neue Captcha Version eingebunden (mit Reload-Funktion und neuer Schriftart)
  • 03.03.2017: Betreff und E-Mail-Adresse werden nun als E-Mail-Betreff und Absender übernommen
Individuelles Kontaktformular mit Captcha in PHP
55 Stimme(n)


Werbung

65 Gedanken zu „Individuelles Kontaktformular mit Captcha in PHP“

  1. Hi, erstmal vielen Dank für das tolle Mailformular. Klappt auch alles super – aber wie kann ich zwischen Nachrichtentext und Captcha noch zwei Checkboxen einfügen? Bin da leider etwas unbedarft…

    Und zweite Frage – wie kann ich die Größe des Nachrichtentextfelds bestimmen?

    Danke & Gruß
    Steven

    1. Hallo Steven,

      Das Einfügen einer Checkbox war bisher nicht möglich. Ich habe jetzt aber eine neue Version des Skripts veröffentlicht, die genau das genau kann. Lade dir am besten die Dateien erneut herunter und schau dir den „Newsletter“-Eintrag im Array als Beispiel an.

      Zu deiner zweiten Frage: Ich würde Dir empfehlen über einen CSS-Code wie diesen textarea{width:300px;height:200px;} alle Textareas auf der Seite anzupassen. Alternativ kannst Du im Code bei textarea zusätzlich style="width:300px;height:200px; einfügen. Die Höhen- und Breitenangaben kannst Du natürlich beliebig wählen.

      Schöne Grüße

      1. Hallo Tristan,
        Formular ist ja erstmal TOP.

        Allerdings habe ich drei Fragen:

        1) Wo muss den Code (style=“width:300px;height:200px;) einfügen damit das Textfeld meine Größe nimmt – sobald ich es einfüge funktioniert die Seite nicht mehr

        2) Wie bekomme ich das Formular zentriert ?

        3) Gerne hätte ich auch die Bestätigung für den Versand bzw. Fehlermeldung als Popup oder zumindest das die Seite auf dem Formular bleibt. Aktuell springt es an den Anfang meiner Seite. 🙁

        Kannst Du mir hier kurz helfen ?

        Aktuell liegt das Formular unter folgendem Link:

        musikkontakt.de/kontakt.php

        Danke.

        Gruß Jürgen

  2. Suuuuuuuuuuuuper!!!! Ganz herzlichen Dank für die superschnelle Reaktion – funktioniert einwandfrei. Das einzigste was noch etwas stört sind die nicht richtig dargestellten Umlaute in der versendeten Mail und wenn man zwei Checkboxen hat, werden die in der E-Mail nebeneinander geklatscht. Habe an verschiedenen Stellen versucht, einen Umbruch hinzubekommen, hat aber nicht geklappt…

    Super vielen Dank nochmal und viele Grüße
    Steve

    1. Gerne doch.
      Ich habe die beiden Skripte noch einmal aktualisiert, sodass damit beispielsweise die Umlaute richtig dargestellt werden. Auch die Checkbox-Eingaben sollten wie alle anderen Felder in der E-Mail getrennt werden. Funktioniert denn der Zeilenumbruch bei den anderen Feldern?

  3. Hi, erstmal vielen Dank für super Formular.
    Ich habe es angepasst und es funktioniert tadellos.
    Eine Frage hätte ich aber.
    In meinem Formular wird die E-Mail Adresse abgefragt und diese hätte ich gerne auch als Antwortadresse, so das ich diese nicht rauskopieren muss, sondern direkt auf Antworten im MailClient klicken kann. Ich habe schon selbst versucht den Wert bei E-Mail header zu ändern, aber das hat leider nicht funktioniert.

    Viele Grüße
    Felix

    1. Hallo Felix,

      Es freut mich, dass dir das Skript weiterhilft. Was du suchst, ist der sogenannte Reply-To Header. Füge am besten einfach unter // Inhalt (wenn nicht leer) in die E-Mail schreiben // eine weitere Code-Zeile ein:

      if ($name == 'NAME_DES_EMAILFELDES') { $mailHeader .= "Reply-To: ".$_POST[field2url($name)]."\r\n"; }

      NAME_DES_EMAILFELDES ist dann zum Beispiel „E-Mail-Adresse“, je nachdem, wie du es in $fields angegeben hast.

      Schöne Grüße
      Tristan

  4. Hallo Tristan,

    vielen vielen Dank für die schnelle Rückmeldung.
    Es funktioniert super.

    Beste Grüße
    Felix

  5. Sehr cooles script allerdings würde ich gern den ausgange als html senden und nicht als plain text.. das mit die angekommende mail etwas schicker aus sieht den so sehe ich nur buschstaben in meiner mail ohne zeilenbruch da blickt man überhaupt nicht mehr durch

    1. Hallo Rene,

      Wenn du aus Content-type: text/plain; charset=utf-8 (Zeile 55) ein Content-type: text/html; charset=utf-8 machst, kannst du auch HTML Tags in deiner eMail verwenden. Für die korrekte Darstellung der Umbrüche kannst du dann auch noch ein nl2br hinzufügen:

      // Inhalt (wenn nicht leer) in die E-Mail schreiben //
      $mailText .= $name.": ".nl2br($_POST[field2url($name)])."\r\n";

      Viel Spaß mit der Lösung und
      Schöne Grüße
      Tristan

  6. hm jetzt bekomme ich immer Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent ich benutze zum bearbeiten der dateien den Rapid PHP 2014 Editor. Speichern tute ich es auch als utf8

  7. Hey Tristan,
    auch ich finde dein Formular echt super und möchte mich für deine tolle Arbeit bedanken!
    Ich hab leider das Problem, dass ich die Eingabefelder nicht breiter machen kann, ich kann einfach die Funktion nicht finden (bin im HTML zu Hause :-P).
    Hast du da einen Tip für mich? Google mag mir nicht helfen.
    Vielen Dank schonmal!
    Viele Grüße,
    Ben

    1. Hi Ben,

      Durchsuche die kontakt.php einfach nach „// Felder auslesen //“. In den nachfolgenden Zeilen findest du die jeweiligen HTML-Codes. Mit style/class-Attributen kannst du dort dann per CSS die Breite der Felder verändern.

      Schöne Grüße
      Tristan

      1. Hallo, Danke für das super Formular, einfach spitze.
        Feldlänge konnte ich leider nicht verändern, bin blutiger Anfänger in php. Würde gerne über css die Länge der Felder einheitlich verlängern und bitte um Hilfe.
        Danke im Voraus.
        Rainer

  8. Hallo!

    Kann man irgendwie die Schriftart/Schriftfarbe für „Anrede“, „Vorname“, „Nachname“ etc. ändern?

    Danke für das super Script!

    1. Hi Johannes,

      Ja, das kannst du. Im Script findest du nach „Felder auslesen“ Mehrmals die Angabe:

      ‹td›".$name.":

      Nun kannst entweder per class-Attribut oder per style-Attribut die Eigenschaften verändern. Ein Beispiel:

      ‹td style=\"font-family:Arial;color:blue;\"›".$name.":

      Viel Erfolg dabei wünscht
      Tristan

    1. Hallo Martin,

      Entweder wurde das Captcha nicht korrekt angegeben oder Du solltest Dir noch einmal alle Felder angucken, die als „Pflichtfeld“ gesetzt wurden. Bei mir funktioniert alles, wie es soll.

      Schöne Grüße

  9. Hi Tristan

    erstmal danke für das Script, doch leider funktioniert es nicht, wie es soll.
    Ganz von vorne angefangen habe ich folgendes gemacht:

    1. Ich habe die ersten Zeilen in meine html-Datei integriert und diese in .php umbenannt, damit sie auch ordentlich interpretiert wird, wenn das Framework es nicht ordentlich macht 😉 (ich benutzt Bootstrap)

    Dazu erstmal die Frage: Wenn ich im html-Code: habe, benötige ich dann noch header(‚Content-Type: text/html; charset=utf-8‘);
    Muss ich evtl eines davon entfernen, damit Google es nicht „doppelt“ ließt 😉 ?

    2. Da meine html (jetzt php) Datei schon recht groß ist (1Pager), habe ich den 2ten Teil in eine weitere php-Datei ausgelagert und binde sie mit:


    in meine Seite ein. Die Klasse hab ich gesetzt, damit ich das auch an meine Styles anpassen kann !

    Das Formular wird korrekt dargestellt, meine Styles übernimmt er ordentlich nur abschicken tut er nicht und eine Fehlermeldung bekomme ich auch nicht.

    Muss ich das Script evtl. in die html(php :)-Datei schreiben, damit es funktioniert oder geht das etwas anders. (habs probiert, das ist auch nicht der Fehler )

    3. Ich wollte eine Checkbox integrieren mit folgendem Code:
    ‚Wie haben Sie von mir erfahren‘ => array(‚checkbox‘, true, array(‚Suchmaschine‘, ‚Freunde / Bekannte‘, ‚Visitenkarte / Flyer‘, ‚Sonstiges‘)),
    dieser steht zwischen der ‚E-Mail-Adresse‘- und ‚Betreff‘-Zeile.

    Vielen Dank ;))
    Monti

    1. zu 2

      hat er beim ersten mal nicht richtig übernommen, ich geh davon aus, das tags ignoriert werden damit kein böser code hier unheil stiftet…
      s.o. so habe ich es eingebunden, natürlich ohne die vielen leerzeichen

    2. Hallo Monti,

      es freut mich, dass dir das Skript gefällt. Bitte schreibe mir bei solchen individuellen und umfangreichen Anfragen doch eben eine Email, dann ist der Code auch lesbar.

      Schöne Grüße
      Tristan

  10. Moin Tristan!

    Vielen Dank für Dein tolles Kontaktformular!!!

    Nachdem es mir nun gelungen ist, dieses in meine Website „einzubauen“ stoße ich noch auf kleinere Schwierigkeiten.
    Es ist mir z.B. gelungen die Textboxen und die Textarea in der Breite anzupassen: <textarea style=\"width:400px\" name=\""…usw. usw.

    Aber wie bekomme ich die Hintergründe dieser z.B. Voll-Weiß (#fff)?!? Egal, was ich da anstelle, ich komme zu keiner Lösung.

    —–

    Ich habe noch mehr Formatierungsschwierigkeiten. Das php-Script des Kontaktformulars habe ich in ein DIV gesetzt. In diesem DIV regelt eine CSS-Datei die Formatierungen für Schriftfarbe, -art und -größe. Änder ich hier etwas, wird diese Änderung für die Texte oberhalb der php-Zeile "$fields = array" voll übernommen. Nicht jedoch für die Texte/Wörter (Anrede, Name, Vorname usw.) unterhalb dieser Zeile??? Hier wird NUR(!) die Schriftart übernommen – Farben, Größe, Stil usw. NICHT!

    Woran liegt das?

    Danke Dir ganz herzlich!

    LG
    Lenni

    1. Moin Lenni,

      Den Hintergrund legst du auch ganz einfach per CSS fest, in deinem Fall mit style="width:400px;background:#fff;". Das Textfeld wird in der Regel jedoch bereits einen weißen Hintergrund haben, solltest du den Rahmen setzen, dann nutze das Attribut border.

      Versuche es doch mal, in dem du !important benutzt, damit gibst du vor, dass dieser CSS-Code alles andere überschreiben soll, zB .divKlasse{color:#666 !important;}.

      Für weitere Fragen zu CSS, kannst du dir zum Beispiel dieses Tutorial anschauen.

      Schöne Grüße
      Tristan

  11. Hallo! Super script gefällt mir 🙂 Gibt es die Möglichkeit die Beschriftung des Buttons zu ändern? Ich kann im Code nichts zum Button finden..
    VG
    Phil

    1. Meine Frage hat sich soeben erübrigt, ich hatte die Stelle im Code übersehen.. Kann mir jemand erklären ob und wenn ja, wie es möglich ist, den Button durch einen „eigenen“ Button (Div Container mit Bild) zu ersetzen?
      Vielen Dank!
      VG
      Philipp

  12. Hallo,

    prima Script. Danke!

    Kann man auch eine automatische Weiterleitung nach einigen Sekunden einfügen?

    Wie kann man die eingegebene Mail-Adresse auf richtige Syntax prüfen?

    Vielen Dank vorab

    1. Hallo Karsten,

      das freut mich! Informationen zu Weiterleitungen findest Du hier. PHP-Weiterleitungen können allerdings nicht zeitverzögert erfolgen, das kannst du nur über HTML oder JavaScript realisieren.

      Wenn du dein Skript um eine Email-Syntax-Prüfung erweitern willst, kannst du einfach mal googeln und ein kleines PHP-Skript einbauen.

  13. Zwei Sachen sind mir noch aufgefallen:

    Wie kann man eine Kopie der Mail an den Verfasser senden?

    Wie verhindert man das mehrfache Absenden des Formulars?

    Danke!

    1. Eine (Blind-)Kopie kannst du über den sog. BCC-Header senden. Ergänze dazu einfach den Inhalt der Variable $mailHeader um ."Bcc: email@adresse.de;"."\r\n".

      An einem Codeschnipsel gegen mehrfaches Absenden kannst du dich entweder selbst probieren – mit einem versteckten Feld und zufällig generierten Code, der in der Session gespeichert wird und nur einmal angenommen wird – oder du nutzt die Captcha-Variante, die zumindest einen etwas besseren Schutz dagegen bietet.

  14. Hi erstmal vielen Dank für das Skript es ist eine Wucht.
    Ich bin 67 und erst vor 10 Jahren zum Computer gekommen und damit fast keine Ahnung vom Programmieren und von englisch erst recht nicht.
    Ich habe es bis jetzt fertig gebracht die Schriftfarbe zu ändern den Hintergrund Transparent zumachen und die Textfelder alle zu verlängern.
    Jetzt möchte ich noch wegen der Optik die Schaltfläche „ Formular abschicken „ genau unter die Schaltfläche vom captcha_code verschieben.
    Ich bin komplett ratlos, vielleicht kann mir hier jemand weiter helfen.
    Hier mal mein Code:

    <?php
    (dann kommt das Skript )

    Vielen Dank erstmal an alle

  15. Nochmal vielleicht klappt es jetzt einen Teil des Codes hochzuladen

    Hier mal mein Code:

    <?php

  16. Hallo Tristan, Danke noch einmal für die superschnelle Antwort. Problem gelöst.
    Eine tolle Anleitung, auch für Anfäönger wie mich geeignet.
    Beste Grüße
    Rainer

  17. Hallo Tristan,

    zunächst mal vielen Dank, macht einen sehr guten Eindruck.
    Ich konnte alles problemlos einbinden, es werden keine Fehler im Code angezeigt, das Captcha scheint zu funktionieren, aber ich bekomme IMMER die Fehlermeldung „Es ist ein Fehler aufgetreten: Es wurden nicht alle Felder korrekt ausgefüllt“. Auch wenn ich alle Felder als Nicht-Pflichtfelder (False) markiere.

    Hab schon verschiedenes ausprobiert, alles „true“, alles „false“, Felder weggelassen, nochmal das Captcha überprüft, aber ich komme nicht dahinter wo der Fehler herkommt. Wahrscheinlich ist es simpel, aber ich sehe es nicht. Für etwas Hilfe wäre ich dankbar.

    Gruß,
    Daniel

    1. Hallo Daniel,

      Dieser Fehler wird dir angezeigt, wenn der Spam-Schutz eingreift, das Captcha falsch übergeben wurde oder ein Pflichtfeld nicht ausgefüllt wurde.

      Du kannst temporär einmal in Zeile 62 (unter „// Pflichtfeld nicht ausgefüllt…“) ein echo "Pflichtfeld"; einfügen. Und ihn Zeile 73 ein echo "Captcha";. Je nachdem, was nun bei deinem Test ausgegeben wird, kannst du sehen, woran es liegt. Eventuell solltest du es auch einmal mit einem anderen Browser testen.

      Viel Erfolg & Beste Grüße!

  18. Herzlichen Dank! KLASSE!
    Funktioniert auf Anhieb, nachdem mein altes Formular nach einem PHP-Update ausgestiegen ist.

    Nun hängen die Felder aber sehr weit links auf der Seite. Wie kann ich dasFormular zentrieren oder einrücken?
    (Bitte für Total-DAU’s)
    Ein text-align: center hat mir nix gebracht.
    Ausserdem ist das Kommentarfeld sehr klein. Kann ich das vergrössern?
    Und wie kann ich bei falschem Capture einen Hinweis: „Capture falsch!“ erzeugen?

    Dann wäre es perfekt!

    LG und nochmal ein grosses DANKE

    Olaf

    1. Hallo Olaf,

      1. Du kannst das Formular als ganzes, d.h. den

      Tag zB zentrieren: <form style="text-align:center;">. Alternativ ist zB auch ein padding-left:20px; oder margin-left:20px; denkbar.

      2. Über die entsprechende Zeile im Code kannst du auch das Textfeld (textarea) anpassen, zB <textarea style="width:200px;height:150px;">.

      3. Um einen spezifischen Captcha-Fehler anzuzeigen, kannst du folgende Zeile nach 73 („$sent = false;“) einfügen:
      $msgError = "Das Captcha wurde nicht korrekt ausgefüllt.";

      Viel Erfolg mit dem Captcha!

  19. Hallo

    gibt es das Script auch mit SMTP Auth Funktion
    Da mein Provider meinte es müsse die Standartversion abschalten. Für Hilfe wäre ich dankbar

    Gruß

    1. Hallo steimel,

      derzeit gibt es keine solche Funktion in meinem Skript, sodass du dir das selbst zusammen basteln müsstest.

      Beste Grüße

  20. Vielen Dank für die Mühe!

    Das Kontaktformular funktioniert gut. Allerdings gibt’s bei mir zwei PHP Fehlermeldungen:
    Warning: Cannot modify header information – headers already sent by … line 5.
    Warning: session_start(): Cannot send session cache limiter – headers already sent … line 6.
    Wie muss ich den Doctype anpassen, damit das verschwindet? Im Moment steht bei mir

    Muss das Charset in den Metatags gelöscht werden, wenn es im PHP-Header definiert wird?

    Wenn ich die Seite aktualisiere (z.B. F5), wird mir jedesmal über das Formular eine neue Mail geschickt.

    Viele Grüße
    Arne

  21. Hallo Tristan,
    vielen Dank für das tolle Formular! Es funktioniert wunderbar.
    Nun möchte ich gerne, dass das Formularfeld „Betreff“ auch in die Betreffzeile der versendeten Mail geschrieben wird. Leider bin ich in php nicht allzu fit und bekomme es einfach nicht hin. Wie kann ich das bewerkstelligen?
    Viele Grüße,
    Manuel

    1. Hi Manuel,

      Du kannst nach der Zeile 60 ($mailText .= $name.“: „.$_POST[field2url($name)].“\r\n“;) folgenden Code einfügen:

      if ($name == "Betreff") { $mailSubject = $_POST[field2url($name)]; }

      Viel Erfolg mit dem Formular!

      Beste Grüße
      Tristan

  22. Hallo,

    Ich betreibe eine Katzenpension und würde gerne dieses script für meine Homepage nutzen, darf Ich das mit diesem Formular + capcha. Oder muss ich dafür eine Lizenz erwerben, Ich frage nur vorher, um böse überraschungen zu vermeiden.

    1. Hallo atze,

      Du darfst das Skript auch für gewerbliche Zwecke kostenfrei verwenden.

      Ich freue mich natürlich über einen Link oder eine Empfehlung, wobei das freiwillig ist 🙂

      Beste Grüße
      Tristan

  23. Hallo Tristan,

    ich habe Dein Script mit einiger Begeisterung ausprobiert und dann in eine Test-Website auf unserem Server eingearbeitet.
    Eigentlich sieht alles gut aus und funktioniert, abgesehen von ein paar Fehlermeldungen des xhtml-Validators. Jedoch bekomme ich die gesendeten Nachrichten einfach nicht zugestellt.
    Da ich in PHP/HTML nicht gerade der Spezi bin, sitze ich nun etwas hilflos vor der Tastatur …
    Woran könnte es hängen?

    Viele Grüße
    Thomas

    1. Hallo Thomas,

      Das liegt dann vermutlich an deinen Servereinstellungen. Die mail() Funktion basiert auf dem PHP-Mailer. Womöglich ist dieser nicht korrekt integriert oder deaktiviert. Da solltest du einmal deinen Serveradministrator kontaktieren.

      Beste Grüße
      Tristan

  24. Hallo,

    ist es irgendwie möglich, dass im Email-Eingang bei einer neuen Mail nicht „kontaktformular@e-mail adresse“ dort steht, sondern die E-Mail Adresse des Absenders.

    Vielen Dank für die Hilfe

    Gruß Max

    1. Hi Max,

      Nach Zeile 60 ($mailText .= …) kannst du folgenden Code einfügen:

      if ($name == „E-Mail-Adresse“ && filter_var($_POST[field2url($name)], FILTER_VALIDATE_EMAIL)) { $mailHeader = „From: „.$_POST[field2url($name)].“\r\n“.“Content-type: text/plain; charset=utf-8″.“\r\n“; }

      Beste Grüße
      Tristan

      1. Wenn ich den Code einfüge, wird das Formular leider nicht mehr angezeigt. Irgendwo ist ein Fehler drin..

        Vielleicht kannst du mir den richtigen Code ja hier mal reinkopieren.

        Danke

        1. Das liegt wohl daran, dass die Anführungszeichen hier anders angezeigt werden, die solltest du dann einfach durch normale Anführungszeichen ersetzen.

  25. Hallo Tristan
    ich habe dein klasse script meinen Wünschen angepasst. Jetzt möchte ich aber, dass der User (E-Mail-Adresse) dieselbe Mail bekommt und der Admin quasi in die BCC geht.
    Kannst du mir da helfen?

    1. Hallo Nobby,

      du findet an 2 Stellen im Skript ein $mailHeader =. Dort musst du den Header so anpassen, dass du z.B. „BCC: email@adresse.de\r\n“ anfügst.

      Zusätzlich musst du noch bei dem mail() Befehl die Adresse des Nutzers angeben, etwa indem du sie in Zeile 66 (beim Kommentar „Email-Adresse als Absender setzen“) in einer neuen Variable speicherst.

      Viel Erfolg dabei.

      Schöne Grüße
      Tristan

      1. Wow! Vielen Dank nicht nur für die Lösung, sondern auf für die Geschindigkeit… Sehr cool!

  26. Hallo, den Danksagungen für das geniale Script möchte ich mich uneingeschränkt anschließen. Per style und css Klassen konnte ich es hervorragend auf meine Websiteanforderungen anpassen: shiatsutuina.de . Ich würde jetzt nur noch gerne eine Art Sprungmarke (Popup oder neue Seite) für die Fehlermeldung $msgError und $msgSent einbauen. Da ich leider kein php Profi bin, würde ich mich über Hinweise oder Codebeispiele sehr freuen!

    1. Es freut mich, dass dir das Kontaktformular geholfen hat. Die sog. Anker in HTML sollten in dem Fall das richtige Stichwort sein. So kannst du dem Formular eine ID zu teilen und in der URL „#id“ darauf verweisen. Viel Erfolg dabei!

  27. Hallo,

    funktioniert tadellos.
    Wie kann ich nach erfolgreichem versenden des Formulars auf eine Danke Seite weiterleiten?

    Hast Du einen Tipp für mich?

Kommentare sind geschlossen.