zum Test Formular
Für bestimmte zwecke können wir Formular-Eingaben weiter einschränken.
Ein input Feld versteht kein minlength = "." im gegensatz zu einem textarea Feld das kein pattern = ".{. , ..}" versteht,
deshalb begrenzen wir ein input Feld mit pattern = " . { . , .. } " und maxlength = " .. " ,
ein textarea Feld mit minlength = " . " und maxlength = " ... " .
ein textarea Feld mit minlength = " . " und maxlength = " ... " .
- pattern = ". { 3 , 25 }" = minimal , maximal .
- <input pattern = " . { 3 , 25 } " .. für Name .. maxlength = " 25 ">
- <input pattern = " . { 8 , 75 } " .. für eMail .. maxlength = "75">
- <input pattern = " . { 3 , 25 } " .. für Betreff .. maxlength = "25">
- <textarea .. für Nachricht .. minlength = "5" maxlength = "200"> </textarea>
Die formular.php kann mit preg_match() besser Filtern:
Wie geht preg_match ( ) z.B. für Name? spezielles Formular Beispiel:
$name = trim ( htmlspecialchars ( $postname ) ) ;
if ( ! preg_match ( " / ^ [ A - Z ] [ A - z \ D ] * $ / " , $name ) )
{
Fehler Meldung erstellen
}
[ A-Z ] = Das erste Zeichen muss ein Grossbuchstabe sein.
[ A - z \ D ] = Buchstaben gross/klein, Umlaute, Leerzeichen und minus sind gestattet.
if ( ! preg_match ( " / ^ [ A - Z ] [ A - z \ D ] * $ / " , $name ) )
{
Fehler Meldung erstellen
}
[ A-Z ] = Das erste Zeichen muss ein Grossbuchstabe sein.
[ A - z \ D ] = Buchstaben gross/klein, Umlaute, Leerzeichen und minus sind gestattet.
Wie geht preg_match() für eMail? Beispiel:
$email = filter_var ( trim ( $postmail ) , FILTER_VALIDATE_EMAIL ) ;
if ( ! preg_match ( " / ^ ( [ a - z 0 - 9 \ + _ \ - ] + ) * @ ( [ a - z 0 - 9 \ - ] { 2 , 30 } + \ . ) + [ a - z ] { 2 , 3 } $ / i x " , $email ) )
{
Fehler Meldung erstellen
}
( [ a - z 0 - 9 \ + _ \ - ] + ) = kleine Buchstaben, Zahlen, unterstrich auch minus ist vor dem @ gestattet.
( [ a - z 0 - 9 \ - ] { 2 , 30 } + \ . ) + [ a - z ] { 2 , 3 } nach dem @ müssen mindestens 2 bis 30 Zeichen vor dem Punkt und maximal 3 Buchstaben nach dem Punkt sein.
if ( ! preg_match ( " / ^ ( [ a - z 0 - 9 \ + _ \ - ] + ) * @ ( [ a - z 0 - 9 \ - ] { 2 , 30 } + \ . ) + [ a - z ] { 2 , 3 } $ / i x " , $email ) )
{
Fehler Meldung erstellen
}
( [ a - z 0 - 9 \ + _ \ - ] + ) = kleine Buchstaben, Zahlen, unterstrich auch minus ist vor dem @ gestattet.
( [ a - z 0 - 9 \ - ] { 2 , 30 } + \ . ) + [ a - z ] { 2 , 3 } nach dem @ müssen mindestens 2 bis 30 Zeichen vor dem Punkt und maximal 3 Buchstaben nach dem Punkt sein.
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 = " " ;
- $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 ( $postname ) ) {
- $name_err = " Feld Name ist leer ! " ;
- }
- elseif ( ( strlen ( trim ( $postname ) ) < 3 ) | | ( strlen ( trim ( $postname ) ) ) > 25 )
- {
- $name_err = " Feld Name muss minimal 3 bis maximal 25 Zeichen enthalten ! " ;
- }
- 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 ! " ;
- }
- elseif ( ( strlen ( trim ( $postmail ) ) < 8 ) | | ( strlen ( trim ( $postmail ) ) ) > 75 )
- {
- $email_err = " Feld eMail muss minimal 8 bis maximal 75 Zeichen enthalten ! " ;
- }
- 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 ! " ;
- }
- elseif ( ( strlen ( trim ( $postbetreff ) ) < 3 ) | | ( strlen ( trim ( $postbetreff ) ) ) > 25 )
- {
- $betreff_err = " Feld Betreff muss minimal 3 bis maximal 25 Zeichen enthalten ! " ;
- }
- 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 ! " ;
- }
- elseif ( ( strlen ( trim ( $postinhalt ) ) < 5 ) | | ( strlen ( trim ( $postinhalt ) ) ) > 200 )
- {
- $inhalt_err = " Feld Nachricht muss minimal 5 bis maximal 200 Zeichen enthalten ! " ;
- }
- 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, Inhalt zwischen Zeile 6 und 82 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
- }
- } // Ende Zeile 6
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 pattern = " . { 3 , 25 } " required = "required" placeholder = " 3 - 25 Zeichen" title = " Bitte einen Namen mit mindestens 3 und maximal 25 Zeichen eingeben. " type = "text" id = "name" name = "name" class = "form-control"maxlength = "25" value = " <?php echo $name;?> ">
- </div>
- <div class = "form-face">
- <label for = "email"> eMail: <span> * </span> </label>
- <span class = "fehler"> <?php echo $email_err ; ?> </span>
- <input pattern = " . { 8 , 75 } " required = "required" placeholder = " 8 - 75 Zeichen " title = " Bitte eine eMail mit mindestens 8 und maximal 75 Zeichen eingeben. " type = "email" id = "email" name = "email" class = "form-control" maxlength = "75" value = " <?php echo $email;?> ">
- </div>
- <div class = "form-face">
- <label for = "betreff"> Betreff: <span> * </span> </label>
- <span class = "fehler"> <?php echo $betreff_err ; ?> </span>
- <input pattern = " . { 3 , 25 } " required = "required" placeholder = " 3 - 25 Zeichen " title = " Bitte einen Betreff mit mindestens 3 und maximal 25 Zeichen eingeben. " type = "text" id = "betreff" name = "betreff" class = "form-control" maxlength = "25" value = " <?php echo $betreff;?> ">
- </div>
- <div class = "form-face">
- <label for = "inhalt"> Nachricht: <span> * </span> </label>
- <span class = "fehler"> <?php echo $inhalt_err ; ?> </span>
- <textarea required = "required" placeholder = " 5 - 200 Zeichen " title = " Bitte eine Nachricht mit mindestens 5 und maximal 200 Zeichen eingeben. " id = "inhalt" name = "inhalt" class = "form-control" minlength = "5" maxlength = "200"> <?php echo $inhalt;?> </textarea>
- </div>
- <input value = "<?php echo $capp1 ; ?>" name = "cap1" type = "hidden">
- <input value = "<?php echo $capp2 ; ?>" name = "cap2" type = "hidden">
- <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" placeholder = " Spamschutz Lösung: " title = " Bitte die Spamschutz Lösung eingeben. " 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 muss fast alles stimmen.