Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.88 KB | None | 0 0
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Complete form</title>
  6. <link rel="stylesheet" href="css/style.css">
  7. </head>
  8. <body class="bodyFormValidatie">
  9.  
  10. <?php
  11. /*
  12. * Globale array met films
  13. */
  14. $films = array(
  15. "Star Wars - The force Awakens",
  16. "Star Trek X",
  17. "The Exorcist",
  18. "How the west was won",
  19. "The Big Lebowski"
  20. );
  21.  
  22. // Begin met een leeg array van foutberichten en inputvelden.
  23. $errors = array();
  24.  
  25. $naamFout = $emailFout = $leeftijdFout = "";
  26.  
  27.  
  28. /*
  29. * Logica om het juiste te doen op basis van
  30. * request methode
  31. */
  32. if ($_SERVER['REQUEST_METHOD']=='POST') {
  33. //Als er fouten opgetreden zijn in valideerForm() geef deze dan door aan toonForm().
  34. //Een lege array wordt door php geïnterpreteerd als false!
  35. if ($formErrors = valideerForm()) {
  36. toonForm($formErrors);
  37. } else {
  38. verwerkForm();
  39. }
  40. } else {
  41. toonForm();
  42. }
  43.  
  44. //Doe iets wanneer het formulier gestuurd is.
  45. function verwerkForm() {
  46. echo "<p>Hallo, ".$_POST['mijnNaam']."</p>";
  47. echo "<p>Je mailadres is: ".$_POST['email']."</p>";
  48. echo "<p>Je leeftijd is: ".$_POST['leeftijd']."</p>";
  49. echo "<p>Je waardeert de film ".$_POST['film']." met een: ".$_POST['score']."</p>";
  50. }
  51.  
  52. /*
  53. * We gaan nu het formulier op een andere manier invoegen om het mogelijk te maken
  54. * om reeds ingevoerde waardes te blijven tonen zodat de gebruiker dit niet
  55. * nogmaals moet doen i.g.v. fouten in de invoer.
  56. */
  57. function toonForm($errors){
  58. if ($errors) {
  59. echo "Corrigeer de volgende fouten s.v.p. <ul><li>";
  60. echo implode('</li><li>',$errors);
  61. echo "</li></ul>";
  62. }
  63. //Zorgen dat $filmMenu overal beschikbaar is.
  64. $GLOBALS['filmMenu'] = genereerFilmMenu($GLOBALS['films']);
  65.  
  66. //Het formulier hier invoegen met require_once.
  67. require_once "register.php";
  68.  
  69. }
  70. /*
  71. * Validatie van gebruikersinvoer is één van de belangrijkste taken van een Web programmeur.
  72. * Dit is de grootste bron van beveilingslekken. Denk aan bv. SQL injectie of Javascript Injectie.
  73. * Voer maar eens: <script>alert("Hallo!");</script> in het invoerveld in. Chrome zal een foutmelding geven
  74. * maar oude browsers zullen dit accepteren.
  75. *
  76. * Ook al kun je veel op browserniveau afvangen. Het is belangrijk dat er ook op Serverniveau
  77. * goede validatie plaatsvindt. Dus op meer niveaus moet er validatie plaatsvinden.
  78. */
  79. function valideerForm(){
  80.  
  81. //De functie trim() haalt eventuele spaties voor en na de tekst weg.
  82. //de ?? '' zorgt er voor dat als er niets is ingevuld, een lege String wordt gebruikt.
  83. $input['mijnNaam'] = trim($_POST['mijnNaam'] ?? '');
  84. if (strlen($input['mijnNaam'])== 0){
  85. $GLOBALS['naamFout'] = "De naam moet ingevuld zijn";
  86. $errors[] = "De naam moet ingevuld zijn";
  87. }
  88. if (strlen($input['mijnNaam'])<3) {
  89. $GLOBALS['naamFout'] = "De naam moet meer dan 2 karakters hebben";
  90. $errors[] = "De naam moet meer dan 2 karakters hebben";
  91. }
  92.  
  93. /*
  94. * Email kan gecontroleerd worden met de functie filter_input().
  95. * Hwet argument INPUT_POST geeft aan dat er in de $_POST array gekeken
  96. * moet worden naar het veld wat in de tweede parameter gegeven is. In dit
  97. * geval is dat: $_POST['email']
  98. * PHP heeft een aantal default filters gedefinieerd. FILTER_VALIDATE_EMAIL
  99. * controleert of het emailadres correct geformatteerd is.
  100. *
  101. */
  102. $input['email']=filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL);
  103. if (! $input['email']){
  104. $GLOBALS['emailFout'] = "Geef s.v.p. een geldig emailadres op";
  105. $errors[] = "Geef s.v.p. een geldig emailadres op";
  106. }
  107.  
  108. /*
  109. * Om de leeftijd te controleren gebruiken we ook de filter_input functie.
  110. * We kijken nu naar het veld $_POST['leeftijd']. We passen het default filter
  111. * voor integers toe. We geven ook een min en max waarde op door een vierde
  112. * parameter mee te geven: een tabel met de sleutel: options en met de waarde een tabel
  113. * met de daadwerkelijke opties en waardes.
  114. */
  115. $input['leeftijd']=filter_input(INPUT_POST,'leeftijd',FILTER_VALIDATE_INT,
  116. array('options' => array('min_range' => 18,
  117. 'max_range' => 65)));
  118. if (is_null($input['leeftijd']) || ($input['leeftijd']=== false)) {
  119. $GLOBALS['leeftijdFout'] = "De leeftijd moet tussen 18 en 65 liggen";
  120. $errors[] = "De leeftijd moet tussen 18 en 65 liggen";
  121. }
  122. //Geef de, mogelijk lege, array terug.
  123. return $errors;
  124. }
  125.  
  126. /*
  127. * Deze functie genereert een keuzelijst waaruit gekozen kan worden.
  128. * @param $films: de lijst met films waaruit gekozen kan worden.
  129. * @return de html die de lijst met opties geeft.
  130. */
  131. function genereerFilmMenu($films) {
  132.  
  133. $html = '';
  134. foreach ($films as $film) {
  135. $html .= "<option>$film</option></br>";
  136. }
  137. return $html;
  138. }
  139.  
  140. ?>
  141.  
  142. </body>
  143. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement