zum Muster Formular
Damit der User die Pflichtfelder auch ausfüllt, nutzen wir im Formular required.
Im Formular:
- <input required="required" type="text" id="name" name="name" class="form-control">
Wir prüfen auch das Feld eMail,
Serverseitig mit FILTER_VALIDATE_EMAIL
FILTER_VALIDATE_EMAIL prüft auf @ sowie . und filtert nicht erlaubte Zeichen aus.
Serverseitig mit FILTER_VALIDATE_EMAIL
FILTER_VALIDATE_EMAIL prüft auf @ sowie . und filtert nicht erlaubte Zeichen aus.
In der formular.php:
- statt:
- $email = trim($postmail);
- diese Zeile:
- $email = filter_var(trim($postmail), FILTER_VALIDATE_EMAIL);
Ein offenes Formular sollte auch gegen Spam geschützt werden,
Das wird mit einem sogenannten Captcha erreicht.
formular.php
<?php
Hier wird das formular eingefügt.
- // Zufallszahlen für Captcha erzeugen
- $capp1 = rand(46,85);
- $capp2 = rand(12,42);
- // Variablen definieren und auf leere Werte setzen
- $name = $email = $inhalt = $betreff = $fehler = ""; // $fehler für Captcha hinzufügen;
- $name_err = $email_err = $inhalt_err = $betreff_err = "";
- // Formulardaten werden verarbeitet, wenn das Formular gesendet wird
- if (isset($_POST['senden']) && $_POST['senden'] == 'Senden')
- {
- // POST für Captcha prüfen und in variablen wandeln
- $postcap1 = isset($_POST['cap1']) ? $_POST['cap1'] : "";
- $cap1 = IntVal($postcap1);
- $postcap2 = isset($_POST['cap2']) ? $_POST['cap2'] : "";
- $cap2 = IntVal($postcap2);
- $postresult = isset($_POST['result']) ? $_POST['result'] : "";
- $result = IntVal($postresult);
- // POST für Name prüfen und in variablen wandeln
- $postname = isset($_POST['name']) ? $_POST['name'] : "";
- if(empty(trim($postname))) {
- $name_err = "Feld Name ist leer!";
- }
- else
- {
- $name = htmlspecialchars($postname);
- if ($name === false)
- {
- $name_err = "Dies ist kein Name!";
- }
- } // Ende Zeile 18
- // POST für eMail prüfen und in variablen wandeln
- $postmail = isset($_POST['email']) ? $_POST['email'] : "";
- if(empty(trim($postmail)))
- {
- $email_err = "Feld eMail ist leer!";
- }
- else
- {
- $email = filter_var(trim($postmail), FILTER_VALIDATE_EMAIL);
- if ($email === false)
- {
- $email_err = "Dies ist keine eMail-Adresse!";
- }
- } // Ende Zeile 31
- // POST für Betreff prüfen und in variablen wandeln
- $postbetreff = isset($_POST['betreff']) ? $_POST['betreff'] : "";
- if(empty(trim($postbetreff))) {
- $betreff_err = "Feld Betreff ist leer!";
- }
- else
- {
- $betreff = htmlspecialchars($postbetreff);
- if ($betreff === false)
- {
- $betreff_err = "Dies ist kein Betreff!";
- }
- } // Ende Zeile 43
- // POST für Nachricht prüfen und in variablen wandeln
- $postinhalt = isset($_POST['inhalt']) ? $_POST['inhalt'] : "";
- if(empty(trim($postinhalt)))
- {
- $inhalt_err = "Feld Nachricht ist leer!";
- }
- else
- {
- $inhalt = htmlspecialchars($postinhalt);
- if ($inhalt === false)
- {
- $inhalt_err = "Dies ist keine Nachricht!";
- }
- } // Ende Zeile 56
- // Ergebnis vom Captcha prüfen
- if(($cap1-$cap2) != $result)$fehler=true;
- // Keine Fehler, Inhalt zwischen Zeile 6 und 62 ausführen
- if(empty($name_err) && empty($email_err) && empty($betreff_err) && empty($inhalt_err) && empty($fehler))
- {
- // Hier kommt je nach Formular sowas wie:
- // $empfaenger = "info@meinemailadresse.de";
- // $from = "From: ".htmlspecialchars($email)."\n";
- // $betref = "server-domainname\n";
- // $text = "Name: ".$name."\n";
- // $text .= "Nachricht: ".$inhalt."\n";
- // mail($empfaenger, $betref, $text, $from);
- // header("Location: gesendet.php");exit;
- // für eine reine text/email hin.
- // Nur zum Testen Ergebnis:
- echo $name.'<br/>';
- echo $email.'<br/>';
- echo $betreff.'<br/>';
- echo $inhalt.'<br/>';
- // Test Ergebnis ende
- }
- } // Ende Zeile 6
Hier wird das formular eingefügt.
das formular
- <!DOCTYPE html>
- <html lang="de"><head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width,initial-scale=1.0">
- <title>Formular</title>
- <meta name="dcterms.rights" content="locomputing">
- <meta name="description" content="Beschreibung der Website">
- <meta name="keywords" content="Keywords">
- <!-- Dieses Stylesheet kann unter Downloads auch runtergeladen werden! -->
- <link rel="stylesheet" href="https://locomputing.de/mustercss/formular_style.css">
- </head>
- <body>
- <h4> Formular </h4>
- <p>Bitte geben Sie Ihre Daten ein.</p>
- <fieldset>
- <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
- <!-- Beschriftung, Eingabefeld und Fehlermeldung für Name -->
- <div class="form-face">
- <label for="name">Name:<span>*</span></label>
- <span class="fehler"> <?php echo $name_err;?></span>
- <input required="required" type="text" id="name" name="name" class="form-control">
- </div>
- <!-- Beschriftung, Eingabefeld und Fehlermeldung für eMail -->
- <div class="form-face">
- <label for="email">eMail:<span>*</span></label>
- <span class="fehler"> <?php echo $email_err;?></span>
- <input required="required" type="text" id="email" name="email" class="form-control">
- </div>
- <!-- Beschriftung, Eingabefeld und Fehlermeldung für Betreff -->
- <div class="form-face">
- <label for="betreff">Betreff:<span>*</span></label>
- <span class="fehler"> <?php echo $betreff_err;?></span>
- <input required="required" type="text" id="betreff" name="betreff" class="form-control">
- </div>
- <!-- Beschriftung, Eingabefeld und Fehlermeldung für Nachricht -->
- <div class="form-face">
- <label for="inhalt">Nachricht:<span>*</span></label>
- <span class="fehler"> <?php echo $inhalt_err;?></span>
- <textarea required="required" id="inhalt" name="inhalt" class="form-control"></textarea>
- </div>
- <!-- Captcha zum senden verstecken -->
- <input value="<?php echo $capp1;?>" name="cap1" type="hidden"/>
- <input value="<?php echo $capp2;?>" name="cap2" type="hidden"/>
- <!-- Spamschutz Eingabefeld erstellen -->
- <div class="form-face">
- <label for="spam">Spamschutz:<span>*</span> <small>Wieviel ist</small> <?php echo $capp1;?> - <?php echo $capp2;?></label>
- <?php if($fehler) echo'<span class="fehler">Die Lösung ist falsch!</span>';?>
- <input required="required" id="result" name="result" type="text" class="form-control"/>
- </div>
- <div class="form-face">
- <label><span>*</span> Felder sind Pflicht!</label>
- <input type="submit" class="butt button-blue" name="senden" value="Senden">
<input class="butt button-red" type="reset" value="Reset"> - </div>
- </form>
- </fieldset>
- </body>
- </html>
zum testen bei eMail mal wer@wo.comando eingeben.