Kontakt Formular
Scripte > Form-Mailer
Ein professionelles PHP-Kontaktformular
Dieses Skript versendet eine E-Mail-Nachricht ggf. auch mit Dateianhängen. Auch eine Spamschutz ist integriert.
In der Datei "settings.php" werden die Grundeinstellungen vorgenommen, die Form und der Style können in der Datei "mail_style.css" der Homepage angepasst werden. Textanpassungen können in der Datei "mail_form.php" vorgenommen werden. Für den Datei-Import der Dateianhänge muss auf dem Server im Verzeichnis "Obj59_0" ein Unterverzeichnis "files" mit Schreibrechten CHMOD 777 angelegt sein (Standard: vorhanden).
In der Datei "settings.php" werden die Grundeinstellungen vorgenommen, die Form und der Style können in der Datei "mail_style.css" der Homepage angepasst werden. Textanpassungen können in der Datei "mail_form.php" vorgenommen werden. Für den Datei-Import der Dateianhänge muss auf dem Server im Verzeichnis "Obj59_0" ein Unterverzeichnis "files" mit Schreibrechten CHMOD 777 angelegt sein (Standard: vorhanden).
Hier sind 2 Varianten zur Einbindung erläutert. Sollte dieses Menü auf mehreren Seiten eingesetzt werden, empfiehlt sich die Variante per <?php include "...."; ?> , um Textänderungen des Menüs nur in einer Datei durchführen zu müssen. Hier muss aber die ausführende Datei die Dateiendung .php aufweisen, um den Code ausführen zu können.
ZIP-Datei in ein beliebiges Verzeichnis auf dem PC entpacken und das Verzeichnis "wsX5Obj" auf den Webserver in das Root-Verzeichnis kopieren. HEAD-Code in den HEAD-Bereich <head>.....</head> und HTML-Code in den BODY-Bereich <body>.....</body> der aufrufende Datei einfügen.
Eine demo.php ist beigefügt, die zum Test in das Root-Verzeichnis des Webservers kopiert werden kann.
Aufruf: "http://www.domain.tld/demo.php"
Wichtig:
Je nach verwendeten Webdesign-Programmen kann es zu Abweichungen in der Darstellung des Formulars kommen.
Sollten mit der Darstellung auf der Homepage zu Zeilenumbruchproblemen kommen, einfach nur in der Datei "mail_style.css" in der Classifizierung
.Obj59_table die Objektbreite width: 590px; oder/und im Skript selbst Zeile 58 cols='60' entsprechend anpassen.
Code für den <HEAD> Bereich
<link rel="stylesheet" href="wsX5Obj/Obj59_0/mail_style.css" />
Code für den <BODY> Bereich
<?php include "wsX5Obj/Obj59_0/mail_form.php"; ?>
alternative Einbindung:
<a name="Obj59_Anker"> </a>
<?php
include_once 'wsX5Obj/Obj59_0/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, ",", ".");
$zufallszahl1 = mt_rand(1, 90);$zufallszahl2 = mt_rand(1, 9);$ergebnis = md5($zufallszahl1 + $zufallszahl2);$code = "&#" . (48 + $zufallszahl2) . ";";
$formular = "<form action='" . $_SERVER["SCRIPT_NAME"] . "#Obj59_Anker' method='post'
enctype='multipart/form-data'>
<table class='Obj59_table'>
<tr>
<td colspan='2' class='Obj59_pflicht'>
</td><!-- Fehleranzeige -->
</tr><tr>
<td> </td>
</tr><tr>
<td><label>Anrede: </label></td>
<td>
<input class='Obj59_format' type='radio' name='anrede' value='Herr' checked='checked' id='Herr'><label for='Herr'>Herr</label> <input class='Obj59_format' type='radio' name='anrede' value='Frau'" . $anredeCk . " id='Frau'><label for='Frau'>Frau</label>
</td>
</tr><tr>
<td>
<label for='Name'>Name: <span class='Obj59_pflicht'>*</span></label>
</td><td>
<input class='Obj59_format' type='text' size='35' name='name' value='" . $name . "' id='Name'>
</td>
</tr><tr>
<td>
<label for='Email'>E-Mail-Adresse: <span class='Obj59_pflicht'>*</span></label>
</td><td>
<input class='Obj59_format' type='text' size='45' name='mailfrom' value='" . $mailfrom . "' id='Email'>
</td>
</tr><tr>
<td>
<label for='Betreff'>Betreff: <span class='Obj59_pflicht'>*</span></label>
</td><td>
<input class='Obj59_format' type='text' size='50' name='betreff' value='" . $betreff . "' id='Betreff'>
</td>
</tr><tr>
<td>
<label for='Nachricht'>Nachricht: <span class='Obj59_pflicht'>*</span></label>
</td><td>
<textarea class='Obj59_format' name='nachricht' rows='8' cols='60' id='Nachricht'>
" . $nachricht . "
</textarea>
</td>
</tr><tr>
<td></td><td>
<input class='Obj59_format' type='checkbox' id='marke3' name='kopie' $kopie>
<label for='marke3'>
Ich möchte eine Kopie dieser Nachricht an meine E-Mail-Adresse
</label>
</td>
</tr><tr>
<td>
<label for='upload'>Datei wählen: </label>
</td><td>
<input class='Obj59_format' type='file' size='45' name='datei' id='upload'>
</td>
</tr><tr class='Obj59_small'>
<td></td><td>
Erlaubte Dateiformate: " . $dtype . " - Dateigröße max.: " . $dsize . " KB
</td>
</tr><tr>
<td>
<label for='Spamschutz'>Spamschutz: <span class='Obj59_pflicht'>*</span></label>
</td><td>
<em>" . $zufallszahl1 . " + " . $code . "</em> =<input type='text' name='zip' size='3' id='Spamschutz'><input type='hidden' name='zip2' value='" . $ergebnis . "'><font class='Obj59_small'>(Rechenaufgabe lösen)</font>
</td>
</tr><tr>
<th colspan='2'>
<span class='Obj59_pflicht'>
✲ <font class='Obj59_small'>Bitte alle Pflichtfelder ausfüllen!</font>
</span>
<img class='Obj59_format' src='wsX5Obj/Obj59_0/abbrechen.gif'
onClick=\"location.href='" . $_SERVER["SCRIPT_NAME"] . "#Obj59_Anker'\" value='Abbrechen'title='Abbrechen' style='cursor: pointer'> <input class='Obj59_format' type='image' src='wsX5Obj/Obj59_0/absenden.gif' name='sendung'
title='Formular absenden'>
</th>
</tr><tr>
<td colspan='2'><hr></td>
</tr><tr align='center' class='Obj59_Obj59_small'><td colspan='2'>
<i><b>$names</b><br> $strasse, $plz $ort, Telefon: $telnr</i>
</td>
</tr>
</table>
</form>";
if (isset($_POST["sendung_x"])) {
if (strlen($name) <= 2) $eingabefehler .= " • Name fehlt!<br>";if (filter_var($mailfrom, FILTER_VALIDATE_EMAIL) === false) $eingabefehler .= " • Fehler in der E-Mail-Adresse!<br>";if (strlen($betreff) <= 6) $eingabefehler .= " • Der Betreff " . ((strlen($betreff) == 0) ? " fehlt" : " ist zu kurz") . " (min. 7 Zeichen)!<br>";if (strlen($nachricht) <= 19) $eingabefehler .= " • Die Nachricht " . ((strlen($nachricht) == 0) ? " fehlt" : " ist zu kurz") . " (min. 20 Zeichen)!<br>";if (md5($_POST["zip"]) != $_POST["zip2"]) $eingabefehler .= " • Der Spamschutz ist leider falsch!<br>";
$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 „" . $neuername . "” wurde erfolgreich hoch geladen.<br><br>";
} else {
$eingabefehler .= " • Beim hochladen der Datei ist leider ein Fehler aufgetreten!<br>";
}} else {
$eingabefehler .= " • Die Datei ist leider zu groß!<br>";
}} else {
$eingabefehler .= " • Ungültiges Dateiformat!<br>";
}
}if ($eingabefehler == "") {
// Diese Nachricht wird an Deine E-Mail-Adresse gesendet (\n = neue Zeile ohne Zeilenumbrüche)
$datum = date("d.m.Y H:i");$text = "Anfrage vom: $datum\n----------\nAnrede: $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='form_bg Obj59_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 (\n = neue Zeile ohne Zeilenumbrüche)
$kopie = "Vielen Dank für Deinen 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\n$signatur";
// E-Mail Kopie versenden
@mail($mailfrom, "Kopie einer Anfrage", $kopie, "From: " . $mailto);
// Bestätigung der E-Mail Kopie
echo "Du erhälst eine Kopie Deiner Anfrage an Deine E-Mail-Adresse.<br><br>";
}
// Link zur Umleitungsseite
echo "<a href='" . $uml . "' target='_top'>Weiter...</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 {
echo $formular;
}
?>
Code Datei "settngs.php"
<?php
// Name/Signatur (wird für die E-Mail-Kopie an den Besucher benötigt!).
$signatur = "Admin - 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";
// Webseite (Umleitung) welche Seite nach dem Senden öffnet.
$uml = "http://www.x5forum.home-wiekau.de/wsx5sys07_a.php";
// Verzeichnis in das die Anhänge hochgeladen werden sollen. Verzeichnis benötigt Schreibrechte CHMOD 777.
$verzeichnis = "wsX5Obj/Obj59_0/files/";
// Absoluter Pfad zum Verzeichnis, in der E-Mail erscheint dann ein Link zur Datei.
$absverzeichnis = "http://www.x5forum.home-wiekau.de/wsX5Obj/Obj59_0/files/";
// Die Größe des Bildes das maximal hochgeladen werden darf (in Bytes), 1024 Bytes = 1 KB.
$max_groesse = 5000;
// 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 Mimetypen: http://www.x5forum.home-wiekau.de/wsX5Lst56.php
?>
Code Datei "mail_style.css"
.Obj59_table {
width: 650px;font-family: tahoma;color: #000;font-size: 12px;line-height: 170%;background-color: #ECF4FC;text-indent: 15px;border: 1px solid #3E78FD;}
.Obj59_danke, .Obj59_danke a {
font-family: tahoma;color: #FF0000;font-size: 14px;font-weight: bold;text-align: center;vertical-align: middle;padding: 10px;}
.Obj59_format { vertical-align: top; margin-top: 3px; }
.Obj59_pflicht { font-family: tahoma; color: #FF0000; font-size: 10px; }
.Obj59_small { font-family: tahoma; font-size: 10px; }
hr { color: #3E78FD; background-color: #3E78FD; height: 1px; border: none; width: 95%; }
Feedbacks zu ""
16 Kommentare
Durchschnittliche Bewertung: 4.9/5
Admin-Antwort
2018-11-12 12:04:39
Ich denke es ist ein Problem der Spamschutzeinstellung. Einfach mal die Corewerte auf dem Server anpassen und/oder die Whitelist aktivieren und einstellen.
Ralf Sbieschni
2018-11-12 12:03:26
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öeren 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
2018-11-12 12:01:10
Das ist richtig, die Uploadgröe wird in der settings eingetragen:
$max_groesse = 1024;
Ralf Sbieschni
2018-11-12 12:00:03
Frage, Datei hochladen mit 1 KB ist ja wohl etwas wenig, was ändere ich in der php Settings ??
Admin-Antwort
2018-11-12 11:58:12
In der settings.php: $mailto = "kontakt@homewiekau.de;muster@mustermann.de";
Kann aber nicht jeder Hoster vermitteln.
Vielen Dank für Dein Feedback.