<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body {
font-family: Verdana, Sans-Serif;
font-size: 1rem;
}
span.pflichtfeld {
font-size: 0.90rem;
color: Red;
}
span.hilfetext {
font-family: Arial, Tahoma, Sans-Serif;
font-size: 0.80rem;
font-style: Oblique;
color: #009500;
}
</style>
</head>
<body>
<?php
/*
Aktion: Formulardaten nicht speichern.
Formular - PHP 5.4+, Zeichenkodierung: UTF-8
Siehe:
https://werner-zenk.de/html/schriftzeic ... tellen.php
Erstellt mit dem Formular Generator (13.02.2024) -
https://werner-zenk.de/tools/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)
// Floodsperre - Innerhalb der Zeitspanne kann das Formular
// vom selben Benutzer nicht mehrmals gesendet werden.
$Floodsperrzeit = 60; // Sperrzeit in Sekunden
// Datei in der die IP und die Zeit gespeichert werden sollen.
$Flooddatei = "floodsperre.txt"; // Die Datei benötigt Leserechte!
// Herunterladen:
https://werner-zenk.de/tools/scripts/fi ... sperre.txt
$name = isset($_POST["name"]) ? trim($_POST["name"]) : ""; // Name
$email = isset($_POST["email"]) ? trim($_POST["email"]) : ""; // E-Mail
$betreff = isset($_POST["betreff"]) ? trim($_POST["betreff"]) : ""; // Betreff
$nachricht = isset($_POST["nachricht"]) ? trim($_POST["nachricht"]) : ""; // Nachricht
// Floodsperre - IP und Zeit überprüfen
if (file_exists($Flooddatei) && is_readable($Flooddatei)) {
foreach (file($Flooddatei) as $element) {
list($Ip, $Zeit) = explode("|", $element);
if ($Ip == $_SERVER["REMOTE_ADDR"]) {
if ((floor((time() - $Zeit))) < $Floodsperrzeit) {
// Meldung und Link ausgeben
exit("<p>Ihre Nachricht wurde bereits versandt!<br>" .
"<a href='" . $Weiterleitung . "'>Weiter</a></p>");
}
}
}
}
// Benutzereingaben überprüfen
// Die Meldungen müssen hier eventuell angepasst werden.
$Fehler = ["name"=>"", "email"=>"", "betreff"=>"", "nachricht"=>"", "sicherheit"=>""];
if (isset($_POST["submit_x"])) {
$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["betreff"] .= !ctype_alpha($_POST["betreff"]) ? " Geben Sie nur Buchstaben ein!" : ""; // Buchstaben ohne Leerzeichen!
$Fehler["nachricht"] = strlen($_POST["nachricht"]) < 1 ? " Bitte füllen Sie dieses Feld aus!" : "";
$Fehler["sicherheit"] = (md5($_POST["zip"]) != $_POST["zip2"]) ? "Die Sicherheitsabfrage ist leider falsch!" : "";
}
// Sicherheitsabfrage - Buchstaben
$Zufall = range("a", "z"); shuffle($Zufall);
$Zufall = substr(implode("", $Zufall), rand(1, 22), 4);
$Ergebnis = md5($Zufall);
$Zufall = substr($Zufall, 0, 2) . " " . substr($Zufall, 2, 2);
// Formular erstellen
$Formular = "
<form action='" . $_SERVER["SCRIPT_NAME"] . "' method='post'>
<p>
<label> Name:
<span class='pflichtfeld'>✲ " . $Fehler["name"] . "</span><br>
<input type='text' name='name' value='" . $name . "' size='35' tabindex='1'>
</label>
<br><span class='hilfetext'> Vorname, Nachname </span>
</p>
<p>
<label> E-Mail:
<span class='pflichtfeld'>✲ " . $Fehler["email"] . "</span><br>
<input type='text' name='email' value='" . $email . "' size='35' tabindex='2'>
</label>
<br><span class='hilfetext'> Gültige E-Mailadresse </span>
</p>
<p>
<label> Betreff:
<span class='pflichtfeld'>✲ " . $Fehler["betreff"] . "</span><br>
<input type='text' name='betreff' value='" . $betreff . "' size='35' tabindex='3'>
</label>
<br><span class='hilfetext'> Min. 3 Zeichen </span>
</p>
<p>
<label> Nachricht:
<span class='pflichtfeld'>✲ " . $Fehler["nachricht"] . "</span><br>
<input type='text' name='nachricht' value='" . $nachricht . "' size='35' tabindex='4'>
</label>
<br><span class='hilfetext'> 3 bis 5000 Zeichen </span>
</p>
<p>
<label> Sicherheitsabfrage:
<span class='pflichtfeld'>✲ " . $Fehler["sicherheit"] . "</span><br>
<em><big>" . $Zufall . "</big></em> =
<input type='text' name='zip' size='4' autocomplete='off'>
</label>
<input type='hidden' name='zip2' value='" . $Ergebnis . "'>
<br><span class='hilfetext'> Buchstaben <b>ohne Leerzeichen</b> eintragen. </span><br>
</p>
<p>
<br>
<input type='image' src='absenden.png' name='submit' title='Kostenpflichtig betsellen' tabindex='5'>
</p>
<p>
<small>Bitte alle mit <span class='pflichtfeld'>✲</span>
markierten Felder ausfüllen.</small>
</p>
</form>
";
// Formular abgesendet
if (isset($_POST["submit_x"])) {
// Sind keine Benutzer-Eingabefehler vorhanden
if (implode("", $Fehler) == "") {
// Floodsperre - IP und Zeit speichern
if (file_exists($Flooddatei) && is_writeable($Flooddatei)) {
$Array = array_slice(file($Flooddatei), -10);
$Fh = fopen($Flooddatei, "w+");
fputs($Fh, implode("", $Array) . $_SERVER["REMOTE_ADDR"] . "|" . time() . "|\n");
fclose($Fh);
}
echo "<p>Die Daten wurden übertragen.</p>";
// Liste der Variablen für die weitere Verarbeitung.
$name; // Name
$email; // E-Mail
$betreff; // Betreff
$nachricht; // Nachricht
}
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>