WebImpressionen
Formular 4

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 = " ... " .
  • 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.
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.
die formular.php
<?php
    • // Zufallszahlen für Captcha erzeugen
  1. $capp1 = rand ( 46 , 85 ) ;
  2. $capp2 = rand ( 12 , 42 ) ;

    • // Variablen definieren und auf leere Werte setzen
  3. $name = $email = $inhalt = $betreff = $fehler = " " ;
  4. $name_err = $email_err = $inhalt_err = $betreff_err = " " ;

    • // Formulardaten werden verarbeitet, wenn das Formular gesendet wird
  5. if ( isset ( $_POST [ ' senden ' ] ) & & $_POST [ ' senden ' ] == ' Senden ' )
  6. {

    • // POST für Captcha prüfen und in variablen wandeln
  7. $postcap1 = isset ( $_POST [ ' cap1 ' ] ) ? $_POST [ ' cap1 ' ] : " " ;
  8. $cap1 = IntVal ( $postcap1 ) ;
  9. $postcap2 = isset ( $_POST [ ' cap2 ' ] ) ? $_POST [ ' cap2 ' ] : " " ;
  10. $cap2 = IntVal ( $postcap2 ) ;
  11. $postresult = isset ( $_POST [ ' result ' ] ) ? $_POST [ ' result ' ] : " " ;
  12. $result = IntVal ( $postresult ) ;

    • // POST für Name prüfen und in variablen wandeln
  13. $postname = isset ( $_POST [ ' name ' ] ) ? $_POST [ ' name ' ] : " " ;
  14. if ( empty ( $postname ) )
  15. {
  16. $name_err = " Feld Name ist leer ! " ;
  17. }
  18. elseif ( ( strlen ( trim ( $postname ) ) < 3 ) | | ( strlen ( trim ( $postname ) ) ) > 25 )
  19. {
  20. $name_err = " Feld Name muss minimal 3 bis maximal 25 Zeichen enthalten ! " ;
  21. }
  22. else
  23. {
  24. $name = trim ( htmlspecialchars ( $postname ) ) ;
  25. if ( $name = = = false )
  26. {
  27. $name_err = " Dies ist kein Name ! " ;
  28. }
  29. }

    • // POST für eMail prüfen und in variablen wandeln
  30. $postmail = isset ( $_POST [ ' email ' ] ) ? $_POST [ ' email ' ] : " " ;
  31. if ( empty ( $postmail ) )
  32. {
  33. $email_err = " Feld eMail ist leer ! " ;
  34. }
  35. elseif ( ( strlen ( trim ( $postmail ) ) < 8 ) | | ( strlen ( trim ( $postmail ) ) ) > 75 )
  36. {
  37. $email_err = " Feld eMail muss minimal 8 bis maximal 75 Zeichen enthalten ! " ;
  38. }
  39. else
  40. {
  41. $email = filter_var ( trim ( $postmail ) , FILTER_VALIDATE_EMAIL ) ;
  42. if ( $email = = = false )
  43. {
  44. $email_err = " Dies ist keine eMail-Adresse ! " ;
  45. }
  46. }

    • // POST für Betreff prüfen und in variablen wandeln
  47. $postbetreff = isset ( $_POST [ ' betreff ' ] ) ? $_POST [ ' betreff ' ] : " " ;
  48. if ( empty ( $postbetreff ) )
  49. {
  50. $betreff_err = " Feld Betreff ist leer ! " ;
  51. }
  52. elseif ( ( strlen ( trim ( $postbetreff ) ) < 3 ) | | ( strlen ( trim ( $postbetreff ) ) ) > 25 )
  53. {
  54. $betreff_err = " Feld Betreff muss minimal 3 bis maximal 25 Zeichen enthalten ! " ;
  55. }
  56. else
  57. {
  58. $betreff = trim ( htmlspecialchars ( $postbetreff ) ) ;
  59. if ( $betreff = = = false )
  60. {
  61. $betreff_err = " Dies ist kein Betreff ! " ;
  62. }
  63. }

    • // POST für Nachricht prüfen und in variablen wandeln
  64. $postinhalt = isset ( $_POST [ ' inhalt ' ] ) ? $_POST [ ' inhalt ' ] : " " ;
  65. if ( empty ( $postinhalt ) )
  66. {
  67. $inhalt_err = " Feld Nachricht ist leer ! " ;
  68. }
  69. elseif ( ( strlen ( trim ( $postinhalt ) ) < 5 ) | | ( strlen ( trim ( $postinhalt ) ) ) > 200 )
  70. {
  71. $inhalt_err = " Feld Nachricht muss minimal 5 bis maximal 200 Zeichen enthalten ! " ;
  72. }
  73. else
  74. {
  75. $inhalt = trim ( htmlspecialchars ( $postinhalt ) ) ;
  76. if ( $inhalt = = = false )
  77. {
  78. $inhalt_err = " Dies ist keine Nachricht ! " ;
  79. }
  80. }

    • // Ergebnis vom Captcha prüfen
  81. if ( ( $cap1 - $cap2 ) ! = $result ) $fehler = true;

    • // Keine Fehler, Inhalt zwischen Zeile 6 und 82 ausführen
  82. if ( empty ( $name_err ) & & empty ( $email_err ) & & empty ( $betreff_err ) & & empty ( $inhalt_err ) & & empty ( $fehler ) )
  83. {

      • // 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

  84. }

  85. } // 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>
  1. <form method = "post">

  2. <div class = "form-face">
  3. <label for = "name"> Name: <span> * </span> </label>
  4. <span class = "fehler"> <?php echo $name_err ; ?> </span>
  5. <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;?> ">
  6. </div>

  7. <div class = "form-face">
  8. <label for = "email"> eMail: <span> * </span> </label>
  9. <span class = "fehler"> <?php echo $email_err ; ?> </span>
  10. <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;?> ">
  11. </div>

  12. <div class = "form-face">
  13. <label for = "betreff"> Betreff: <span> * </span> </label>
  14. <span class = "fehler"> <?php echo $betreff_err ; ?> </span>
  15. <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;?> ">
  16. </div>

  17. <div class = "form-face">
  18. <label for = "inhalt"> Nachricht: <span> * </span> </label>
  19. <span class = "fehler"> <?php echo $inhalt_err ; ?> </span>
  20. <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>
  21. </div>

  22. <input value = "<?php echo $capp1 ; ?>" name = "cap1" type = "hidden">
  23. <input value = "<?php echo $capp2 ; ?>" name = "cap2" type = "hidden">

  24. <div class = "form-face">
  25. <label for = "spam"> Spamschutz: <span> * </span> <small> Wieviel ist </small> <?php echo $capp1 ; ?> - <?php echo $capp2 ; ?></label>
  26. <?php if ( $fehler ) echo ' <span class = "fehler">Die Lösung ist falsch!</span> ' ;?>
  27. <input required = "required" placeholder = " Spamschutz Lösung: " title = " Bitte die Spamschutz Lösung eingeben. " id = "result" name = "result" type = "text" class = "form-control">
  28. </div>

  29. <div class = "form-face">
  30. <label> <span> * </span> Felder sind Pflicht! </label>
  31. <input type = "submit" class = "butt button-blue" name = "senden" value = "Senden">
  32. <input class = "butt button-red" type = "reset" value = "Reset">
  33. </div>

  34. </form>
  • </fieldset>

  • </body>
  • </html>
das formular
zum testen muss fast alles stimmen.