roboterfreund
Neues Mitglied
Hallo, ich habe auf einer Website ein HTML-/PHP-Kontaktformular generieren lassen.
Leider zeigt es, wenn man dieses abschicken möchte an, dass ein Fehler aufgetreten sei.
Woran kann das liegen?
Hier die Datei:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title></title>
<style>
body {
font-family: Verdana, Sans-Serif;
font-size: 14px;
}
form {
width: 410px;
padding: 10px;
margin: Auto;
}
span.pflichtfeld {
font-size: 12px;
color: Red;
}
span.hilfetext {
font-size: 10px;
font-style: Oblique;
}
</style>
</head>
<body>
<?php
/*
Aktion: Formulardaten als E-Mail versenden.
Formular - PHP 5.4+, Zeichenkodierung: UTF-8
Erstellt mit dem Formular Generator (26.03.2020) -
http://www.nof-tutorials.com/Webbausteine-Formular-Generator/formulargenerator.php
Bitte testen Sie das Formular ausführlich und
beachten Sie die Hinweise im Quelltext!
*/
// PHP Fehlermeldungen (1 um das Formular zu testen) anzeigen.
error_reporting(1); // (0/1)
// Weiterleitung - Nach dem absenden des Formulars,
// gelangt der Benutzer über einen Link auf folgende Seite:
$Weiterleitung = "index.php";
// Dateien hochladen
// Verzeichnis
$Verzeichnis = "uploads"; // Benötigt Schreibrechte!
// Die Größe (einer einzelnen) Datei die maximal
// hoch geladen werden darf (in Bytes eintragen).
$Maxgroesse = 0; // 1024 Bytes = 1 KB (1048576 Bytes = 1 MB)
// Anzahl der maximalen Dateien die hoch geladen werden dürfen.
$Maxdateien = 1;
// Angabe des Datentypen (Mimetypen) der hoch geladen werden darf.
$Datentyp = array(
"png" => "image/png",
"jpg" => "image/jpeg",
"jpg" => "image/pjpeg",
"jpeg" => "image/jpeg",
"gif" => "image/gif",
"txt" => "text/plain",
"htm" => "text/html",
"pdf" => "application/pdf",
"zip" => "application/x-zip-compressed",
);
// Ausgabe der Datentypen und Dateigröße formatieren
$Dtype = implode(", ", array_unique(array_keys($Datentyp)));
$Dsize = ($Maxgroesse >= 1048576) ? number_format(($Maxgroesse / 1024 / 1024), 1, ",", ".") .
" MB" : number_format(($Maxgroesse / 1024), 1, ",", ".") . " KB";
$anrede = isset($_POST["anrede"]) ? $_POST["anrede"] : ""; // Anrede
// Auswahlliste: Anrede
$array = [
"",
"Frau",
"Herr",
"Divers",
];
$anredeAW = "<select name='anrede' size='1'>";
foreach ($array as $value) {
$anredeAW .= "\n <option value='" . $value . "'" .
((isset($_POST["anrede"]) ? $_POST["anrede"] : "") == $value ?
" selected='selected'" : "") . ">" . $value . "</option>";
}
$anredeAW .= "\n </select>";
$vorname = isset($_POST["vorname"]) ? strip_tags(trim($_POST["vorname"])) : ""; // Vorname
$name = isset($_POST["name"]) ? strip_tags(trim($_POST["name"])) : ""; // Name
$email = isset($_POST["email"]) ? strip_tags(trim($_POST["email"])) : ""; // E-Mail
$betreff = isset($_POST["betreff"]) ? strip_tags(trim($_POST["betreff"])) : ""; // Betreff
$nachricht = isset($_POST["nachricht"]) ? strip_tags(trim($_POST["nachricht"])) : ""; // Nachricht
$KopieCk = isset($_POST["Kopie"]) ? " checked='checked'" : null; // E-Mail Kopie
// Benutzereingaben überprüfen
// Die Meldungen müssen hier eventuell angepasst werden.
$Fehler = ["File"=>"", "vorname"=>"", "name"=>"", "email"=>"", "betreff"=>"",
"nachricht"=>"", "sicherheit"=>""];
if (isset($_POST["submit"])) {
$Fehler["vorname"] = strlen($_POST["vorname"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
$Fehler["name"] = strlen($_POST["name"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
$Fehler["email"] = strlen($_POST["email"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
$Fehler["betreff"] = strlen($_POST["betreff"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
$Fehler["nachricht"] = strlen($_POST["nachricht"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
$Fehler["sicherheit"] = $_POST["mr"] == "Roboter" ? "Die Sicherheitsabfrage ist leider falsch!" : "";
// Datei hochladen
$Files = "";
$Filename = "";
for ($I = 0; $I < count($_FILES["File"]["name"]); $I++) {
if ($I > $Maxdateien) break;
if ($_FILES["File"]["name"][$I] != "" && $_FILES["File"]["error"][$I] === UPLOAD_ERR_OK) {
$Array = explode(".", basename($_FILES["File"]["name"][$I]));
$Filename = substr(preg_replace("/[^a-z0-9_-]/", "", strtolower(strtr($Array[0], "äöüß", "aous"))), 0, 45);
if (file_exists($Verzeichnis . "/" . $Filename . "." . strtolower(end($Array)))) {
$Filename .= "_" . rand(1, 9999);
}
$Filename .= "." . strtolower(end($Array));
if (in_array($_FILES["File"]["type"][$I], $Datentyp)) {
if ($_FILES["File"]["size"][$I] <= $Maxgroesse) {
move_uploaded_file($_FILES["File"]["tmp_name"][$I], $Verzeichnis . "/" . $Filename);
if (file_exists($Verzeichnis . "/" . $Filename)) {
$Files .= "http://" . $_SERVER["SERVER_NAME"] . "/" . $Verzeichnis . "/" . $Filename . ", ";
}
else {
$Fehler["File"] .= "<br>Beim hochladen der Datei „" . $Filename . "” ist leider ein Fehler aufgetreten!";
}
}
else {
$Fehler["File"] .= "<br>Die Datei „" . $Filename . "” ist leider zu groß!";
}
}
else {
$Fehler["File"] .= "<br>Die Datei „" . $Filename . "” hat ein ungültiges Dateiformat!";
}
}
}
}
// Formular erstellen
$Formular = "
<form action='" . $_SERVER["SCRIPT_NAME"] . "' method='post' enctype='multipart/form-data'>
<p>
<label> Anrede: <br>
" . $anredeAW . "
</label>
</p>
<p>
<label> Vorname:
<span class='pflichtfeld'>✲ " . $Fehler["vorname"] . "</span><br>
<input type='text' name='vorname' value='" . $vorname . "' size='35'>
</label>
</p>
<p>
<label> Name:
<span class='pflichtfeld'>✲ " . $Fehler["name"] . "</span><br>
<input type='text' name='name' value='" . $name . "' size='35'>
</label>
</p>
<p>
<label> E-Mail:
<span class='pflichtfeld'>✲ " . $Fehler["email"] . "</span><br>
<input type='email' name='email' value='" . $email . "' size='35'>
</label>
</p>
<p>
<label> Betreff:
<span class='pflichtfeld'>✲ " . $Fehler["betreff"] . "</span><br>
<input type='text' name='betreff' value='" . $betreff . "' size='35'>
</label>
</p>
<p>
<label> Nachricht:
<span class='pflichtfeld'>✲ " . $Fehler["nachricht"] . "</span><br>
<input type='text' name='nachricht' value='" . $nachricht . "' size='35'>
</label>
</p>
<p>
<label> Dateianhang: <br>
<input type='file' name='File[]' size='20' multiple='multiple'>
</label>
<br>
<small>Dateiformat: " . $Dtype . " - Dateigröße max.: " . $Dsize . " </small>
</p>
<p>
<label> Sicherheitsabfrage:
<span class='pflichtfeld'>✲ " . $Fehler["sicherheit"] . "</span><br>
<label><input type='radio' name='mr' value='Roboter' checked='checked'> Ich bin ein Roboter</label>
<label><input type='radio' name='mr' value='Mensch'> Ich bin ein Mensch</label>
<br><span class='hilfetext'> Bitte lösen Sie diese Frage richtig. </span><br>
</p>
<p>
<br>
<input type='submit' name='submit' value='Formular absenden'>
</p>
<p>
<small>Bitte alle mit <span class='pflichtfeld'>✲</span>
markierten Felder ausfüllen.</small>
</p>
</form>
";
// Formular abgesendet
if (isset($_POST["submit"])) {
// Sind keine Benutzer-Eingabefehler vorhanden
if (implode("", $Fehler) == "") {
// Daten als E-Mail versenden (Vorschlag) - Bitte anpassen!
// Zeitzone und das aktuelle Datum setzen
// http://de3.php.net/manual/de/timezones.europe.php
date_default_timezone_set("Europe/Berlin");
$Datum = date("d.m.Y H:i");
// Empfänger E-Mail
$Mailto = "[email protected]";
// Inhalt der E-Mail setzen
$Text = " Gesendet am: $Datum Uhr
Anrede: $anrede
Vorname: $vorname
Name: $name
E-Mail: $email
Betreff: $betreff
Nachricht: $nachricht
File: $Files
";
// E-Mail versenden
mb_internal_encoding("UTF-8");
$Betreff = mb_encode_mimeheader($betreff, "UTF-8", "Q");
$Kopfzeile = "MIME-Version: 1.0;\nFrom: " . mb_encode_mimeheader($name, "UTF-8", "Q") .
"<" . $email . ">" . "\nContent-Type: text/plain; Charset=UTF-8;\n";
if (mail($Mailto, $Betreff, $Text, $Kopfzeile)) {
echo "<p>Vielen Dank, die Nachricht wurde versendet.</p>";
}
else {
// Wenn die Daten nicht versendet werden konnten,
// wird die E-Mail-Adresse für den direkten Kontakt eingeblendet.
echo "<p>Beim Senden der Nachricht ist ein Fehler aufgetreten!<br>" .
"Bitte wenden Sie sich direkt an: <a href='mailto:" . $Mailto . "'>" . $Mailto . "</a></p>";
}
// E-Mail Kopie versenden (Vorschlag) - Bitte anpassen!
// Diese Nachricht wird automatisch an die E-Mail-Adresse des Besuchers gesendet.
// Name/Signatur
$Signatur = "";
// Betreff
$Betreff = "Kopie einer Nachricht";
// Inhalt der E-Mail setzen
$Text = " Vielen Dank für Ihren Besuch bei ...
Wir haben folgende Nachricht erhalten:
Anrede: $anrede
Vorname: $vorname
Name: $name
E-Mail: $email
Betreff: $betreff
Nachricht: $nachricht
Mit freundlichen Grüßen
$Signatur
";
// E-Mail Kopie versenden
$Betreff = mb_encode_mimeheader($Betreff, "UTF-8", "Q");
$Kopfzeile = "MIME-Version: 1.0;\nFrom: " . mb_encode_mimeheader($Signatur, "UTF-8", "Q") .
"<" . $Mailto . ">" . "\nContent-Type: text/plain; Charset=UTF-8;\n";
if (mail($email, $Betreff, $Text, $Kopfzeile)) {
echo "<p>Sie erhalten eine Kopie der Nachricht an Ihre E-Mail-Adresse.</p>";
}
// Weiterleitung
echo "<p><a href='" . $Weiterleitung . "' target='_top'>Weiter</a></p>";
}
else {
// Formular und Benutzer-Eingabefehler ausgeben
echo $Formular;
}
}
else {
// Formular ausgeben
echo $Formular;
}
?>
</body>
</html>
Leider zeigt es, wenn man dieses abschicken möchte an, dass ein Fehler aufgetreten sei.
Woran kann das liegen?
Hier die Datei:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title></title>
<style>
body {
font-family: Verdana, Sans-Serif;
font-size: 14px;
}
form {
width: 410px;
padding: 10px;
margin: Auto;
}
span.pflichtfeld {
font-size: 12px;
color: Red;
}
span.hilfetext {
font-size: 10px;
font-style: Oblique;
}
</style>
</head>
<body>
<?php
/*
Aktion: Formulardaten als E-Mail versenden.
Formular - PHP 5.4+, Zeichenkodierung: UTF-8
Erstellt mit dem Formular Generator (26.03.2020) -
http://www.nof-tutorials.com/Webbausteine-Formular-Generator/formulargenerator.php
Bitte testen Sie das Formular ausführlich und
beachten Sie die Hinweise im Quelltext!
*/
// PHP Fehlermeldungen (1 um das Formular zu testen) anzeigen.
error_reporting(1); // (0/1)
// Weiterleitung - Nach dem absenden des Formulars,
// gelangt der Benutzer über einen Link auf folgende Seite:
$Weiterleitung = "index.php";
// Dateien hochladen
// Verzeichnis
$Verzeichnis = "uploads"; // Benötigt Schreibrechte!
// Die Größe (einer einzelnen) Datei die maximal
// hoch geladen werden darf (in Bytes eintragen).
$Maxgroesse = 0; // 1024 Bytes = 1 KB (1048576 Bytes = 1 MB)
// Anzahl der maximalen Dateien die hoch geladen werden dürfen.
$Maxdateien = 1;
// Angabe des Datentypen (Mimetypen) der hoch geladen werden darf.
$Datentyp = array(
"png" => "image/png",
"jpg" => "image/jpeg",
"jpg" => "image/pjpeg",
"jpeg" => "image/jpeg",
"gif" => "image/gif",
"txt" => "text/plain",
"htm" => "text/html",
"pdf" => "application/pdf",
"zip" => "application/x-zip-compressed",
);
// Ausgabe der Datentypen und Dateigröße formatieren
$Dtype = implode(", ", array_unique(array_keys($Datentyp)));
$Dsize = ($Maxgroesse >= 1048576) ? number_format(($Maxgroesse / 1024 / 1024), 1, ",", ".") .
" MB" : number_format(($Maxgroesse / 1024), 1, ",", ".") . " KB";
$anrede = isset($_POST["anrede"]) ? $_POST["anrede"] : ""; // Anrede
// Auswahlliste: Anrede
$array = [
"",
"Frau",
"Herr",
"Divers",
];
$anredeAW = "<select name='anrede' size='1'>";
foreach ($array as $value) {
$anredeAW .= "\n <option value='" . $value . "'" .
((isset($_POST["anrede"]) ? $_POST["anrede"] : "") == $value ?
" selected='selected'" : "") . ">" . $value . "</option>";
}
$anredeAW .= "\n </select>";
$vorname = isset($_POST["vorname"]) ? strip_tags(trim($_POST["vorname"])) : ""; // Vorname
$name = isset($_POST["name"]) ? strip_tags(trim($_POST["name"])) : ""; // Name
$email = isset($_POST["email"]) ? strip_tags(trim($_POST["email"])) : ""; // E-Mail
$betreff = isset($_POST["betreff"]) ? strip_tags(trim($_POST["betreff"])) : ""; // Betreff
$nachricht = isset($_POST["nachricht"]) ? strip_tags(trim($_POST["nachricht"])) : ""; // Nachricht
$KopieCk = isset($_POST["Kopie"]) ? " checked='checked'" : null; // E-Mail Kopie
// Benutzereingaben überprüfen
// Die Meldungen müssen hier eventuell angepasst werden.
$Fehler = ["File"=>"", "vorname"=>"", "name"=>"", "email"=>"", "betreff"=>"",
"nachricht"=>"", "sicherheit"=>""];
if (isset($_POST["submit"])) {
$Fehler["vorname"] = strlen($_POST["vorname"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
$Fehler["name"] = strlen($_POST["name"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
$Fehler["email"] = strlen($_POST["email"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
$Fehler["betreff"] = strlen($_POST["betreff"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
$Fehler["nachricht"] = strlen($_POST["nachricht"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
$Fehler["sicherheit"] = $_POST["mr"] == "Roboter" ? "Die Sicherheitsabfrage ist leider falsch!" : "";
// Datei hochladen
$Files = "";
$Filename = "";
for ($I = 0; $I < count($_FILES["File"]["name"]); $I++) {
if ($I > $Maxdateien) break;
if ($_FILES["File"]["name"][$I] != "" && $_FILES["File"]["error"][$I] === UPLOAD_ERR_OK) {
$Array = explode(".", basename($_FILES["File"]["name"][$I]));
$Filename = substr(preg_replace("/[^a-z0-9_-]/", "", strtolower(strtr($Array[0], "äöüß", "aous"))), 0, 45);
if (file_exists($Verzeichnis . "/" . $Filename . "." . strtolower(end($Array)))) {
$Filename .= "_" . rand(1, 9999);
}
$Filename .= "." . strtolower(end($Array));
if (in_array($_FILES["File"]["type"][$I], $Datentyp)) {
if ($_FILES["File"]["size"][$I] <= $Maxgroesse) {
move_uploaded_file($_FILES["File"]["tmp_name"][$I], $Verzeichnis . "/" . $Filename);
if (file_exists($Verzeichnis . "/" . $Filename)) {
$Files .= "http://" . $_SERVER["SERVER_NAME"] . "/" . $Verzeichnis . "/" . $Filename . ", ";
}
else {
$Fehler["File"] .= "<br>Beim hochladen der Datei „" . $Filename . "” ist leider ein Fehler aufgetreten!";
}
}
else {
$Fehler["File"] .= "<br>Die Datei „" . $Filename . "” ist leider zu groß!";
}
}
else {
$Fehler["File"] .= "<br>Die Datei „" . $Filename . "” hat ein ungültiges Dateiformat!";
}
}
}
}
// Formular erstellen
$Formular = "
<form action='" . $_SERVER["SCRIPT_NAME"] . "' method='post' enctype='multipart/form-data'>
<p>
<label> Anrede: <br>
" . $anredeAW . "
</label>
</p>
<p>
<label> Vorname:
<span class='pflichtfeld'>✲ " . $Fehler["vorname"] . "</span><br>
<input type='text' name='vorname' value='" . $vorname . "' size='35'>
</label>
</p>
<p>
<label> Name:
<span class='pflichtfeld'>✲ " . $Fehler["name"] . "</span><br>
<input type='text' name='name' value='" . $name . "' size='35'>
</label>
</p>
<p>
<label> E-Mail:
<span class='pflichtfeld'>✲ " . $Fehler["email"] . "</span><br>
<input type='email' name='email' value='" . $email . "' size='35'>
</label>
</p>
<p>
<label> Betreff:
<span class='pflichtfeld'>✲ " . $Fehler["betreff"] . "</span><br>
<input type='text' name='betreff' value='" . $betreff . "' size='35'>
</label>
</p>
<p>
<label> Nachricht:
<span class='pflichtfeld'>✲ " . $Fehler["nachricht"] . "</span><br>
<input type='text' name='nachricht' value='" . $nachricht . "' size='35'>
</label>
</p>
<p>
<label> Dateianhang: <br>
<input type='file' name='File[]' size='20' multiple='multiple'>
</label>
<br>
<small>Dateiformat: " . $Dtype . " - Dateigröße max.: " . $Dsize . " </small>
</p>
<p>
<label> Sicherheitsabfrage:
<span class='pflichtfeld'>✲ " . $Fehler["sicherheit"] . "</span><br>
<label><input type='radio' name='mr' value='Roboter' checked='checked'> Ich bin ein Roboter</label>
<label><input type='radio' name='mr' value='Mensch'> Ich bin ein Mensch</label>
<br><span class='hilfetext'> Bitte lösen Sie diese Frage richtig. </span><br>
</p>
<p>
<br>
<input type='submit' name='submit' value='Formular absenden'>
</p>
<p>
<small>Bitte alle mit <span class='pflichtfeld'>✲</span>
markierten Felder ausfüllen.</small>
</p>
</form>
";
// Formular abgesendet
if (isset($_POST["submit"])) {
// Sind keine Benutzer-Eingabefehler vorhanden
if (implode("", $Fehler) == "") {
// Daten als E-Mail versenden (Vorschlag) - Bitte anpassen!
// Zeitzone und das aktuelle Datum setzen
// http://de3.php.net/manual/de/timezones.europe.php
date_default_timezone_set("Europe/Berlin");
$Datum = date("d.m.Y H:i");
// Empfänger E-Mail
$Mailto = "[email protected]";
// Inhalt der E-Mail setzen
$Text = " Gesendet am: $Datum Uhr
Anrede: $anrede
Vorname: $vorname
Name: $name
E-Mail: $email
Betreff: $betreff
Nachricht: $nachricht
File: $Files
";
// E-Mail versenden
mb_internal_encoding("UTF-8");
$Betreff = mb_encode_mimeheader($betreff, "UTF-8", "Q");
$Kopfzeile = "MIME-Version: 1.0;\nFrom: " . mb_encode_mimeheader($name, "UTF-8", "Q") .
"<" . $email . ">" . "\nContent-Type: text/plain; Charset=UTF-8;\n";
if (mail($Mailto, $Betreff, $Text, $Kopfzeile)) {
echo "<p>Vielen Dank, die Nachricht wurde versendet.</p>";
}
else {
// Wenn die Daten nicht versendet werden konnten,
// wird die E-Mail-Adresse für den direkten Kontakt eingeblendet.
echo "<p>Beim Senden der Nachricht ist ein Fehler aufgetreten!<br>" .
"Bitte wenden Sie sich direkt an: <a href='mailto:" . $Mailto . "'>" . $Mailto . "</a></p>";
}
// E-Mail Kopie versenden (Vorschlag) - Bitte anpassen!
// Diese Nachricht wird automatisch an die E-Mail-Adresse des Besuchers gesendet.
// Name/Signatur
$Signatur = "";
// Betreff
$Betreff = "Kopie einer Nachricht";
// Inhalt der E-Mail setzen
$Text = " Vielen Dank für Ihren Besuch bei ...
Wir haben folgende Nachricht erhalten:
Anrede: $anrede
Vorname: $vorname
Name: $name
E-Mail: $email
Betreff: $betreff
Nachricht: $nachricht
Mit freundlichen Grüßen
$Signatur
";
// E-Mail Kopie versenden
$Betreff = mb_encode_mimeheader($Betreff, "UTF-8", "Q");
$Kopfzeile = "MIME-Version: 1.0;\nFrom: " . mb_encode_mimeheader($Signatur, "UTF-8", "Q") .
"<" . $Mailto . ">" . "\nContent-Type: text/plain; Charset=UTF-8;\n";
if (mail($email, $Betreff, $Text, $Kopfzeile)) {
echo "<p>Sie erhalten eine Kopie der Nachricht an Ihre E-Mail-Adresse.</p>";
}
// Weiterleitung
echo "<p><a href='" . $Weiterleitung . "' target='_top'>Weiter</a></p>";
}
else {
// Formular und Benutzer-Eingabefehler ausgeben
echo $Formular;
}
}
else {
// Formular ausgeben
echo $Formular;
}
?>
</body>
</html>