ich habe mit Hilfe des Generators ein Kontaktformular erstellt, zu sehen unter:
https://www.meinlangengrassau.de/kontakt.html
Seite bitte nach unten scrollen, da sich auf dieser Seite zunächst auch noch das Kontaktformular von Mobirise befindet.
Das Formular habe ich in einen iframe eingebunden.
Das Versenden dieses Formulars funktioniert (landet leider im Spam-Ordner, muss ich noch einstellen)
Der Absender des Formulars erhält ebenfalls eine Mail (Kopie des Formulars)
Nun habe ich folgende Probleme:
1) Obwohl ich am Generator die Schriftfarbe "weiss" eingestellt habe, blieb sie leider schwarz
2) Das Versenden einer Datei (Bild mit ca. 125 kb) sowohl .png als auch .jpg funktioniert nicht, ich erhalte die Meldung: "Eingabefehler"
3) Nach dem erfolgten Versand, wollte ich wieder auf der Seite Kontakt landen, das funktioniert nicht
Code: Alles auswählen
// Weiterleitung - Nach dem absenden des Formulars,
// gelangt der Benutzer über einen Link auf folgende Seite:
$Weiterleitung = "kontakt.html"; // Relativer Pfad, ausgehend vom Formular.
Code: Alles auswählen
<html lang="de">
<head>
<meta charset="UTF-8">
<title></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body, textarea {
font-family: Verdana, Sans-Serif;
font-size: 1rem;
}
span.pflichtfeld {
font-size: 0.90rem;
color: yellow;
}
span.hilfetext {
font-family: Arial, Tahoma, Sans-Serif;
font-size: 0.80rem;
font-style: Oblique;
color: #ffffff;
}
</style>
</head>
<body>
<?php
/*
Aktion: Formulardaten als E-Mail versenden.
Formular - PHP 5.4+, Zeichenkodierung: UTF-8
Erstellt mit dem Formular Generator (20.12.2023) -
https://www.mobirise-tutorials.com/Formular-Generator/
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 = "kontakt.html"; // Relativer Pfad, ausgehend vom Formular.
// Dateien hochladen
// Verzeichnis
$Verzeichnis = "uploads"; // Benötigt Schreibrechte!
// Die Größe (einer einzelnen) Datei die maximal
// hoch geladen werden darf (in Bytes eintragen).
$Maxgroesse = 2097152; // 1024 Bytes = 1 KB (1048576 Bytes = 1 MB)
// Umrechner: https://werner-zenk.de/tools/umrechner.php
// Anzahl der maximalen Dateien die hoch geladen werden dürfen.
$Maxdateien = 1;
// Angabe des Datentypen (Mimetypen) der hoch geladen werden darf.
// Mimetypen: https://werner-zenk.de/php/mimetypen.php
$Datentyp = array(
"png" => "image/png",
"jpg" => "image/jpeg",
"jpg" => "image/pjpeg",
"jpeg" => "image/jpeg",
"gif" => "image/gif",
);
// 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";
$name = isset($_POST["name"]) ? htmlspecialchars(trim($_POST["name"])) : ""; // Name
$email = isset($_POST["email"]) ? htmlspecialchars(trim($_POST["email"])) : ""; // E-Mail
$telefon = isset($_POST["telefon"]) ? htmlspecialchars(trim($_POST["telefon"])) : ""; // Telefon
$betreff = isset($_POST["betreff"]) ? htmlspecialchars(trim($_POST["betreff"])) : ""; // Betreff
$nachricht = isset($_POST["nachricht"]) ? htmlspecialchars(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"=>"", "name"=>"", "email"=>"", "betreff"=>""];
if (isset($_POST["submit"])) {
$Fehler["name"] = strlen($_POST["name"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
$Fehler["name"] .= !preg_match("/^[a-zA-Z äöüßáéíóú]/i", $_POST["name"]) ? " Geben Sie nur Buchstaben und Leerzeichen ein!" : "";
$Fehler["email"] = filter_var($_POST["email"], FILTER_VALIDATE_EMAIL) === false ? " Geben Sie eine gültige E-Mail-Adresse ein!" : "";
$Fehler["betreff"] = strlen($_POST["betreff"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
$Fehler["betreff"] .= !preg_match("/^[a-zA-Z äöüßáéíóú]/i", $_POST["betreff"]) ? " Geben Sie nur Buchstaben und Leerzeichen ein!" : "";
// 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> Name:
<span class='pflichtfeld'>✲ " . $Fehler["name"] . "</span><br>
<input type='text' name='name' value='" . $name . "' size='35' required='required' tabindex='1'>
</label>
</p>
<p>
<label> E-Mail:
<span class='pflichtfeld'>✲ " . $Fehler["email"] . "</span><br>
<input type='text' name='email' value='" . $email . "' size='35' required='required' tabindex='2'>
</label>
</p>
<p>
<label> Telefon:
<br>
<input type='text' name='telefon' value='" . $telefon . "' size='35' tabindex='3'>
</label>
</p>
<p>
<label> Betreff:
<span class='pflichtfeld'>✲ " . $Fehler["betreff"] . "</span><br>
<input type='text' name='betreff' value='" . $betreff . "' size='35' required='required' tabindex='4'>
</label>
</p>
<p>
<label> Nachricht:<br>
<textarea name='nachricht' cols='40' rows='8' tabindex='5'>" . $nachricht . "</textarea>
</label>
</p>
<p>
<label> Datei hoch laden: <br>
<input type='file' name='File[]' size='20' multiple='multiple' tabindex='6'>
</label>
<br>
<small>Dateiformat: " . $Dtype . " - Dateigröße max.: " . $Dsize . " </small>
<br><span class='hilfetext'> Nur Bilder </span>
</p>
<p>
<br>
<input type='submit' name='submit' value='Formular absenden' tabindex='7'>
</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
// Eine beim Provider registrierte E-Mail Adresse verwenden!
$Mailto = "r.pischl@gmx.de";
// Inhalt der E-Mail setzen
$Text = " Gesendet am: $Datum Uhr
Name: $name
E-Mail: $email
Telefon: $telefon
Betreff: $betreff
Nachricht: $nachricht
File: $Files
";
// E-Mail versenden
mb_language("de");
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") .
"<" . $Mailto . ">" . "\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 = "Reinhard Pischl";
// Betreff
$Betreff = "Kopie einer Nachricht";
// Inhalt der E-Mail setzen
$Text = " Vielen Dank für Ihren Besuch bei ...
Wir haben folgende Nachricht erhalten:
Name: $name
E-Mail: $email
Telefon: $telefon
Betreff: $betreff
Nachricht: $nachricht
Mit freundlichen Grüßen
$Signatur
";
// E-Mail Kopie versenden
mb_language("de");
mb_internal_encoding("UTF-8");
$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 "<p><span class='pflichtfeld'><strong>Eingabefehler, Bitte korrigieren</strong></span></p>";
echo $Formular;
}
}
else {
// Formular ausgeben
echo $Formular;
}
?>
</body>
</html>