Kontakt Formular - Website X5 Hilfe - Die Helpsite

Direkt zum Seiteninhalt

Hauptmenü:

Kontakt Formular

Scripte > Form-Mailer

Ein professionelles PHP-Kontaktformular

Dieses Script versendet eine E-Mail-Nachricht mit Anlagen mit dem Parameter sendmail. Auch eine Spamschutz ist integriert. Hier muss der Server die Scripssprache PHP auswerten können und die aufrufende Datei muss somit die Dateiendung .php aufweisen.
In der Datei "settings.php" müssen die Grundeinstellungen vorgenommen werden, die Form und der Style können in der Datei "mail_style.css" sowie Textänderungen in der Datei "mailform.php" vorgenommen werden. Für den Datei-Import  der Anlagen muss auf dem Server im Verzeichnis mailform ein Unterverzeichnis "files" angelegt und diesem die Schreibrechte CHMOD 777 zugewiesen werden.
Es gibt zwei Möglichkeiten zur Einbindung in die Homepage. Die ZIP-Datei entpacken und das Verzeichnis "mailform" auf den Server kopieren.


 
Dateiformat: png, jpg, jpeg, gif - Dateigröße max.: 1,0 KB
23 + 6 = (Rechenaufgabe lösen)

  Bitte alle Pflichtfelder ausfüllen!            

Michael Mustermann
Musterstrasse 1, 12345 Musterhausen, Telefon: 01234-987654

Code für den HEAD-Bereich:

[Vor dem /HEAD]

<link rel="stylesheet" type="text/css" href="mailform/mail_style.css" />

Variante 1

[Objekt HTML]

Code für das HTML-Objekt:


<?php
include_once 'mailform/settings.php';

// Fortgeschrittene Anwender können ab hier Änderungen vornehmen.
error_reporting(0);
$eingabefehler = ""; // Bitte leer lassen!
$anrede = isset($_POST["anrede"]) ? $_POST["anrede"] : "";
$anredeCk = $anrede == "Frau" ? " checked=
'checked'" : "";
$name = isset($_POST["name"]) ? $_POST["name"] : "";
$mailfrom = isset($_POST["mailfrom"]) ? $_POST["mailfrom"] : "";
$betreff = isset($_POST["betreff"]) ? $_POST["betreff"] : "";
$nachricht = isset($_POST["nachricht"]) ? $_POST["nachricht"] : "";
$kopie = isset($_POST["kopie"]) ? " checked=
'checked'" : "";
$dtype = implode(", ", array_unique(array_keys($datentyp)));
$dsize = number_format(($max_groesse / 1024), 1, ",", ".");
// Spamschutz: Rechenaufgabe
$zufallszahl1 = mt_rand(1, 90);
$zufallszahl2 = mt_rand(1, 9);
$ergebnis = md5($zufallszahl1 + $zufallszahl2);
$code = "&#" . (48 + $zufallszahl2) . ";";
// Formular erstellen
$formular = "<form action=
'" . $_SERVER["SCRIPT_NAME"] . "' method='post'
enctype=
'multipart/form-data'>
<table class='form_table'>
<tr><td colspan='2'><hr></td></tr>
<tr><td colspan='2' class='form_pflicht'><!-- Fehleranzeige --></td></tr>
<tr><td><label>Anrede:</label></td>
 
<td><input type='radio' name='anrede' value='Herr' checked='checked' id='Herr'>
     <label
for='Herr'>Herr</label> &nbsp;
     <input type='radio' name='anrede' value='Frau'" . $anredeCk . " id='Frau'>
     <label
for='Frau'>Frau</label></td>
</tr><tr>
 
<td><label for='Name'>Name: <span class='form_pflicht'>*</span></label></td>
 
<td><input type='text' size='35' name='name' value='" . $name . "' id='Name'></td>
</tr><tr>
 
<td><label for='Email'>E-Mail: <span class='form_pflicht'>*</span></label></td>
 
<td><input type='text' size='45' name='mailfrom' value='" . $mailfrom . "' id='Email'></td>
</tr><tr>
 
<td><label for='Betreff'>Betreff: <span class='form_pflicht'>*</span></label></td>
 
<td><input type='text' size='50' name='betreff' value='" . $betreff . "' id='Betreff'></td>
</tr><tr>
 
<td><label for='Nachricht'>Nachricht: <span class='form_pflicht'>*</span></label></td>
 
<td><textarea name='nachricht' rows='8' cols='63' id='Nachricht'>" . $nachricht . "</textarea></td>
</tr><tr><td></td>
 
<td><input type='checkbox' id='marke3' name='kopie' $kopie>
     <label for='marke3'>Ich w&uuml;nsche eine Kopie dieser Nachricht an meine E-Mail-Adresse</label></td>
</tr><tr>
 
<td><label for='upload'>Bild ausw&auml;hlen: </label></td>
 
<td><input type='file' size='45' name='datei' id='upload'>
</tr><tr class='small'>
 
<td></td>
 
<td>Dateiformat: " . $dtype . " - Dateigr&ouml;&szlig;e max.: " . $dsize . " KB</td>
</tr><tr>
 
<td><label for='Spamschutz'>Spamschutz: <span class='form_pflicht'>*</span></label></td>
 
<td><em>" . $zufallszahl1 . " &#43; " . $code . "</em> =
 
<input type='text' name='zip' size='3' id='Spamschutz'>
 <input
type='hidden' name='zip2' value='" . $ergebnis . "'>
 
<font class='small'><b>(Rechenaufgabe l&ouml;sen)</b></font></td>
</tr><tr class='form_bg'>
 
<th colspan='2'><br>&nbsp;
  
<span class='form_pflicht'>&#10034;</span>
  <font
class='small'>Bitte alle Pflichtfelder ausf&uuml;llen!</font>&nbsp;&nbsp;&nbsp;&nbsp;
  
<img src='mailform/abbrechen.gif' onClick=\"location.href='" . $_SERVER["SCRIPT_NAME"] . "'\" value='Abbrechen'
  title=
'Abbrechen' style='cursor: pointer'>&nbsp; &nbsp; &nbsp; &nbsp;
  
<input type='image' src='mailform/absenden.gif' name='sendung' title='Formular absenden'>
 
</th></tr><tr><td colspan='2'><hr></td></tr>
<tr align='center' class='small'>
  
<td colspan='2'><i><b>$names</b><br> $strasse, $plz $ort, Telefon: $telnr</i></td>
 
</tr><tr><td colspan='2'><hr></td></tr>
</table>
</form>";

if (isset($_POST["sendung_x"])) {
// Pflichtfelder überprüfen
if (strlen($name) <= 2) $eingabefehler .= "&bull;
Name fehlt!<br>";
if (filter_var($mailfrom, FILTER_VALIDATE_EMAIL) === false) $eingabefehler .= "&bull;
Fehler in der E-Mail-Adresse!<br>";
if (strlen($betreff) <= 6) $eingabefehler .= "&bull;
Der Betreff " . ((strlen($betreff) == 0) ? " fehlt" : " ist zu kurz") . " (min. 7 Zeichen)!<br>";
if (strlen($nachricht) <= 19) $eingabefehler .= "&bull;
Die Nachricht " . ((strlen($nachricht) == 0) ? " fehlt" : " ist zu kurz") . " (min. 20 Zeichen)!<br>";
if (md5($_POST["zip"]) != $_POST["zip2"]) $eingabefehler .= "&bull;
Der Spamschutz ist leider falsch!<br>";
// Datei hochladen
$link = "";
$status = "";
if ($_FILES["datei"]["name"] != "" && $_FILES["datei"]["error"] == 0) {
 if (in_array($_FILES["datei"]["type"], $datentyp)) {
  if ($_FILES["datei"]["size"] <= $max_groesse) {
   $array = explode(".", basename($_FILES["datei"]["name"]));
   $dateiendung = strtolower(end($array));
   $dateiname = preg_replace("/[^a-z0-9_-]/", "", strtolower($array[0]));
   $neuername = substr($dateiname, 0, 25) . "_" . mt_rand(1, 999) . "." . $dateiendung;
    move_uploaded_file($_FILES["datei"]["tmp_name"], $verzeichnis . $neuername);
    if (file_exists($verzeichnis . $neuername)) {
     $link = $absverzeichnis . $neuername;
     $status = "
Die Datei &bdquo;" . $neuername . "&rdquo; wurde erfolgreich hoch geladen.<br><br>";
    }
    else {
     $eingabefehler .= "&bull;
Beim hochladen der Datei ist leider ein Fehler aufgetreten!<br>";
   }
  }
  else {

   
$eingabefehler .= "&bull; Die Datei ist leider zu groß!<br>";
 }
 }
 else {
  $eingabefehler .= "&bull;
Ung&uuml;ltiges Dateiformat!<br>";
 
}
}
if ($eingabefehler == "") {

// Diese Nachricht wird an die E-Mail-Adresse gesendet (\n = neue Zeile)
$datum = date("d.m.Y H:i");
 $text = "
Datum: $datum\n====Anrede: $anrede\nName: $name\nE-Mail: $mailfrom\nBetreff: $betreff\nNachricht: $nachricht\n\nDatei: $link\n====";
// E-Mail versenden
 @mail($mailto, $betreff, $text, "
From: " . $mailfrom);
// Bestätigung der E-Mail
 echo "<p class='danke'>" .
 "Vielen Dank, die Nachricht wurde gesendet.
<br><br>";
echo $status; // "Die Datei X wurde erfolgreich hochgeladen"
 
if (isset($_POST["kopie"])) {
// Diese Nachricht wird an die E-Mail-Adresse des Besuchers gesendet
  
$kopie = "Vielen Dank für den Besuch bei $url .\nWir haben folgende Nachricht erhalten:\n====\nAnrede: $anrede\nName: $name\nE-Mail: $mailfrom\nBetreff: $betreff\nNachricht: $nachricht\n\n====\nMit freundlichen Grüßen,\n$signatur";
// E-Mail Kopie versenden
 
@mail($mailfrom, "Kopie einer Anfrage", $kopie, "From: " . $mailto);
// Bestätigung der E-Mail Kopie
 
echo "Eine Kopie der Anfrage wird an die eigene E-Mail-Adresse gesendet.<br><br>";
 }
// Link zur Startseite
 
echo "<a href='" . $url . "' target='_top'>Weiter zur Startseite</a></p>";
}
else {

// Eingabefehler und Formular ausgeben
echo str_replace("<!-- Fehleranzeige -->",
 "
<strong>Die Nachricht wurde aus folgendem Grund nicht gesendet:</strong><br>" .
$eingabefehler, $formular);
}
}
else {
// Formular ausgeben
echo $formular;
}
?>

Variante 2

[Objekt HTML]

Code für das HTML-Objekt:


<?php include "mailform/mailform.php"; ?>

Code der PHP-Datei (settings.php):


<?php

// Name/Signatur (wird für die E-Mail-Kopie an den Besucher benötigt!).
$signatur = "
Mario - Website X5 Helpsite";
// Vorname und Name, Strasse und Nr., PLZ und Ort, Telefonnummer (für Impressum).
$names = "
Michael Mustermann";
$strasse = "
Musterstrasse 1";
$plz = "
12345";
$ort = "
Musterhausen";
$telnr = "
01234-987654";
// E-Mail-Adresse des Absenders.
$mailto = "
kontakt@home-wiekau.de";  
// Webseite (URL) wo das Script eingesetzt wird.
$url = "
http://www.x5forum.home-wiekau.de";
// Verzeichnis für Anhänge. Das Verzeichnis benötigt Schreibrechte CHMOD 777.
$verzeichnis = "
mailform/files/";
// Absoluter Pfad zum Verzeichnis, in der E-Mail erscheint dann ein Link zur Datei.
$absverzeichnis = "
http://www.x5forum.home-wiekau.de/mailform/files/";
// Die Größe des Bildes das maximal hochgeladen werden darf (in Bytes), 1024 Bytes = 1 KB.   
$max_groesse =
1024;
// Angabe der Datentypen (Mimetypen) die hochgeladen werden dürfen.
$datentyp = array(     
"png" => "image/png",     
"jpg" => "image/jpeg",
"jpg" => "image/pjpeg",
"jpeg" => "image/jpeg",
"gif" => "image/gif",
);

?>
Weitere Information über Mimetypen gibt es hier.

Code der CSS-Datei (mail_style.css):

.form_table { width: 590px; font-family: tahoma; color: #000; font-size: 12px; line-height: 170%;  background-color: #ECF4FC; text-indent: 15px; border: 1px  solid #3E78FD; }
label
{ cursor: pointer; }
input
{ vertical-align: middle; margin-right: 20px; }
.form_pflicht
{ color: #FF0000; font-size: 14px; border: 0px; text-indent: 15px; margin: 20px; font-family: tahoma; }
.danke, .danke a
{ font-family: tahoma; color: #FF0000; font-size: 14px; font-weight: bold;  text-align: center; vertical-align: middle; padding: 10px; }
.small
{ font-family: tahoma; font-size: 10px; }
hr
{ color: #3E78FD; background-color: #3E78FD; height: 1px; border: none; width: 95%; }

Feedbacks zu ""

es gibt insgesamt 10 Kommentar(e)


  1. Ralf Sbieschni http://www.wetter-neugersdorf.de schreibt am 03.04.2017, 22.25 Uhr

    Hallo, nutze das Formular jetzt schon 1 Jahr, habe mich immer gewundert, warum keine Emails kommen, am Anfang ging es auch, aber jetzt werden keine Mails mehr versendet, kann es an einer höheren PHP Version vom Provider liegen, habe mit mehreren Mailadressen probiert, es kommt nichts an, auch hochladen von Bildern geht nicht, es kommt aber keine Fehlermeldung.
    Admin-Antwort: Ich denke es ist ein Problem der Spamschutzeinstellung. Einfach mal die Corewerte auf dem Server anpassen und/oder die Whitelist aktivieren und einstellen.

  2. Ralf Sbieschni http://www.wetter-neugersdorf.de schreibt am 14.04.2016, 19.28 Uhr

    Frage, Datei hochladen mit 1 KB ist ja wohl etwas wenig, was ändere ich in der php Settings ??
    Admin-Antwort: Das ist richtig, die Uploadgröße wird in der settings eingetragen: $max_groesse = 1024;

  3. Michael Helfen schreibt am 07.12.2014, 21.40 Uhr

    Erst einmal ein Kompliment zu diesem ausgezeichneten Kontaktformular!! Danke; ich habe eine frage: Wie/Wo kann ich es eingeben, wenn an mehrere E-mails die Anfrage des Kontaktformulars gleichzeitig geschickt werden soll? vielen Dank für eine mögliche Lösung; mit freundlichem Gruß, Michael helfen
    Admin-Antwort: In der settings.php: $mailto = "kontakt@home-wiekau.de;muster@mustermann.de";
    Kann aber nicht jeder Hoster vermitteln.

  4. Chris schreibt am 21.12.2013, 12.51 Uhr

    wenn ich eine jepeg datei hochladen will - kommt permanent die fehlermeldung "unbekanntes dateiformat" und die dateigrösse lässt sich auch nicht verändern.
    Admin-Antwort: Dann stimmen die Pfadangaben in der settings.php nicht oder Du hast die Freigaben nicht erteilt.

  5. Andreas schreibt am 28.11.2013, 08.40 Uhr

    Moin moin, erst einmal muss ich mich bedanken für deine Hilfestellung. Ich habe nur noch zwei kleine Probme mit der grafischen Darstellung. Das Formular an sich funktioniert super. Problem1: 3x unterschiedliche Schriftart und Größe in den Textfeldern Problem2: unterschiedliche Anzeige der Buttons "abbrechen" und "absenden"... sie liegen nicht auf eine Höhe Einen LINK kann ich noch nicht anbieten, da unsere Homepage erst Ende Dezember online geht.
    Admin-Antwort: zum Problem 1:
    Ersetze im Code den Zeilenteil:
    img src='mailform/abbrechen.gif'
    mit:
    input type='image' src='mailform/abbrechen.gif'
    Zum Problem 2:
    In der CSS-Datei kann man die Schriften definieren.

  6. Andreas Sichting schreibt am 01.11.2013, 09.00 Uhr

    Moin moin, um Peters Frage noch einmal aufzugreifen... habe ich folgende Frage dazu. (ich bin kein php.spezi) Unsere Homepage ist rein html aufgebaut. Kann man die Kontaktformularseite als php in die html Struktur einbinden? Server kann php und mein Editor auch. Danke & Gruß aus Hamburg

  7. Rene schreibt am 22.07.2012, 13.10 Uhr

    Bleibt nur noch das Problem / die Frage, wie realisiere ich es, dass in der gesendeten und dann natürlich empfangenen Mail Umlaute dargestellt werden ???
    Admin-Antwort: Bitte dazu mal dieses Thema lesen: http://newyear2006.wordpress.com/2011/01/18/outlook-problem-mit-umlauten-anstatt-werden-weie-fragezeichen-in-schwarzen-rauten/

  8. Katrin Kleinert schreibt am 21.07.2012, 11.15 Uhr

    Hallo, bei mir ist es so, dass die Email-Kopie an mich gesendet und das Original an den Absender gesendet wird. Was ist da falsch bei mir? Sonst funktioniert alles perfekt. Ach ja, Danke für dieses super Script !!!
    Admin-Antwort: In der settings.php ev. einen falschen Eintag bei "E-Mail-Adresse des Absenders" gemacht? Nach einem nochmaligem Test, kann ich den Fehler nicht nachvollziehen.

  9. Peter Buers schreibt am 26.01.2012, 10.54 Uhr

    Hier noch schnell meine Versuchsseite: http://wommel.org/x5/zeltlager/mail.html

  10. Peter Buers http://www.wommel.org schreibt am 26.01.2012, 10.49 Uhr

    Hallo,ich habe ein wenig Schwierigkeiten mit der Umsetzung.Ich möchte gerne eine Seite (mail.html) erstellen auf der sich Besucher bei mir melden können. Ich verwende Website X5 V9. Jetzt meine Frage:Wo genau muss ich den Code für den HEAD Berich einbauen. Ist hier die mail.html gemeint?Ist Variante 2 nur ein Link? Sie merken schon ich kenn mich nicht so doll aus. Ich würde mich aber trotzdem über ein wenig Hilfe (Schritt für Schritt) freuen.
    Antwort: Die Seite darf keine html sein, sondern benötigt die Dateiendung php. 2 Sitemap - Seite markieren (1xklicken), oberes rechtes Symbol - Erweitert. Dort Dateinamenformat von html auf php einstellen und das große Feld ist der HEAD-Bereich für diese Seite. Dein Server muss auch php unterstützen. Variante 1 und 2 unterscheiden sich kaum, nur dass Du die Einstellungen bei 1 direkt auf der Seite tätigst und bei 2 im Ordner "mailform" auf dem Server in der Datei "mailform.php".


Name*
Vorname
Kommentar*
Email *
Homepage
Telefon
Sicherheitscode *
 
Logo HTML5
Button Spenden

© 2009 - 2018




  Besucher Statistik
 » 9 Online
 » 107 Heute
 » 1059 Woche
 » 3839 Monat
 » 41529 Jahr
 » 288107 Gesamt
Rekord: 1420 (10.04.2014)
Zurück zum Seiteninhalt | Zurück zum Hauptmenü