zum Test Formular
Damit der User die Pflichtfelder auch ausfüllt, nutzen wir im Formular required.
Im Formular:
- <input required = "required" type = "text" id = "..." 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 raus.
Serverseitig mit FILTER_VALIDATE_EMAIL
FILTER_VALIDATE_EMAIL prüft auf @ sowie . und filtert nicht erlaubte Zeichen raus.
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.
die 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 ) ; // Nur Zahlen zulassen
- $postcap2 = isset ( $_POST [ ' cap2 ' ] ) ? $_POST [ ' cap2 ' ] : " " ;
- $cap2 = IntVal ( $postcap2 ) ; // Nur Zahlen zulassen
- $postresult = isset ( $_POST [ ' result ' ] ) ? $_POST [ ' result ' ] : " " ;
- $result = IntVal ( $postresult ) ; // Nur Zahlen zulassen
- // POST für Name prüfen und in variablen wandeln
- $postname = isset ( $_POST [ ' name ' ] ) ? $_POST [ ' name ' ] : " " ;
- if ( empty ( $postname ) ) {
- $name_err = " Feld Name ist leer ! " ;
- }
- else
- {
- $name = trim ( htmlspecialchars ( $postname ) ) ;
- if ( $name = = = false )
- {
- $name_err = " Dies ist kein Name ! " ;
- }
- }
- // POST für eMail prüfen und in variablen wandeln
- $postmail = isset ( $_POST [ ' email ' ] ) ? $_POST [ ' email ' ] : " " ;
- if ( empty ( $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 ! " ;
- }
- }
- // POST für Betreff prüfen und in variablen wandeln
- $postbetreff = isset ( $_POST [ ' betreff ' ] ) ? $_POST [ ' betreff ' ] : " " ;
- if ( empty ( $postbetreff ) ) {
- $betreff_err = " Feld Betreff ist leer ! " ;
- }
- else
- {
- $betreff = trim ( htmlspecialchars ( $postbetreff ) ) ;
- if ( $betreff = = = false )
- {
- $betreff_err = " Dies ist kein Betreff ! " ;
- }
- }
- // POST für Nachricht prüfen und in variablen wandeln
- $postinhalt = isset ( $_POST [ ' inhalt ' ] ) ? $_POST [ ' inhalt ' ] : " " ;
- if ( empty ( $postinhalt ) )
- {
- $inhalt_err = " Feld Nachricht ist leer ! " ;
- }
- else
- {
- $inhalt = trim ( htmlspecialchars ( $postinhalt ) ) ;
- if ( $inhalt = = = false )
- {
- $inhalt_err = " Dies ist keine Nachricht ! " ;
- }
- }
- // Ergebnis vom Captcha prüfen
- if ( ( $cap1 - $cap2 ) ! = $result ) $fehler = true;
- // Keine Fehler, Formular Inhalt 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 = " meine@mailadresse.de ";
- // $from = "From: " . $email . "\ n " ;
- // $betref = $betreff . " \ 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
- }
- }
Hier wird das formular eingefügt.
das formular.html
- <! 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 ">
- <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">
- <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>
- <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>
- <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" betreff = "betreff" class = "form-control">
- </div>
- <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>
das formular
zum testen bei eMail mal wer@wo.comando eingeben.