WebImpressionen

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.
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
    • // 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 = ""; // $fehler für Captcha hinzufügen;
  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(trim($postname)))
  15. {
  16. $name_err = "Feld Name ist leer!";
  17. }
  18. else
  19. {
  20. $name = htmlspecialchars($postname);
  21. if ($name === false)
  22. {
  23. $name_err = "Dies ist kein Name!";
  24. }
  25. } // Ende Zeile 18

    • // POST für eMail prüfen und in variablen wandeln
  26. $postmail = isset($_POST['email']) ? $_POST['email'] : "";
  27. if(empty(trim($postmail)))
  28. {
  29. $email_err = "Feld eMail ist leer!";
  30. }
  31. else
  32. {
  33. $email = filter_var(trim($postmail), FILTER_VALIDATE_EMAIL);
  34. if ($email === false)
  35. {
  36. $email_err = "Dies ist keine eMail-Adresse!";
  37. }
  38. } // Ende Zeile 31

    • // POST für Betreff prüfen und in variablen wandeln
  39. $postbetreff = isset($_POST['betreff']) ? $_POST['betreff'] : "";
  40. if(empty(trim($postbetreff)))
  41. {
  42. $betreff_err = "Feld Betreff ist leer!";
  43. }
  44. else
  45. {
  46. $betreff = htmlspecialchars($postbetreff);
  47. if ($betreff === false)
  48. {
  49. $betreff_err = "Dies ist kein Betreff!";
  50. }
  51. } // Ende Zeile 43

    • // POST für Nachricht prüfen und in variablen wandeln
  52. $postinhalt = isset($_POST['inhalt']) ? $_POST['inhalt'] : "";
  53. if(empty(trim($postinhalt)))
  54. {
  55. $inhalt_err = "Feld Nachricht ist leer!";
  56. }
  57. else
  58. {
  59. $inhalt = htmlspecialchars($postinhalt);
  60. if ($inhalt === false)
  61. {
  62. $inhalt_err = "Dies ist keine Nachricht!";
  63. }
  64. } // Ende Zeile 56

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

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

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

  68. }

  69. } // 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>
  1. <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

    • <!-- Beschriftung, Eingabefeld und Fehlermeldung für Name -->
  2. <div class="form-face">
  3. <label for="name">Name:<span>*</span></label>
  4. <span class="fehler"> <?php echo $name_err;?></span>
  5. <input required="required" type="text" id="name" name="name" class="form-control">
  6. </div>

    • <!-- Beschriftung, Eingabefeld und Fehlermeldung für eMail -->
  7. <div class="form-face">
  8. <label for="email">eMail:<span>*</span></label>
  9. <span class="fehler"> <?php echo $email_err;?></span>
  10. <input required="required" type="text" id="email" name="email" class="form-control">
  11. </div>

    • <!-- Beschriftung, Eingabefeld und Fehlermeldung für Betreff -->
  12. <div class="form-face">
  13. <label for="betreff">Betreff:<span>*</span></label>
  14. <span class="fehler"> <?php echo $betreff_err;?></span>
  15. <input required="required" type="text" id="betreff" name="betreff" class="form-control">
  16. </div>

    • <!-- Beschriftung, Eingabefeld und Fehlermeldung für Nachricht -->
  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" id="inhalt" name="inhalt" class="form-control"></textarea>
  21. </div>

    • <!-- Captcha zum senden verstecken -->
  22. <input value="<?php echo $capp1;?>" name="cap1" type="hidden"/>
  23. <input value="<?php echo $capp2;?>" name="cap2" type="hidden"/>

    • <!-- Spamschutz Eingabefeld erstellen -->
  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" 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">
    <input class="butt button-red" type="reset" value="Reset">
  32. </div>

  33. </form>
  • </fieldset>

  • </body>
  • </html>

zum testen bei eMail mal wer@wo.comando eingeben.