Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!doctype html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Complete form</title>
- <link rel="stylesheet" href="css/style.css">
- </head>
- <body class="bodyFormValidatie">
- <?php
- /*
- * Globale array met films
- */
- $films = array(
- "Star Wars - The force Awakens",
- "Star Trek X",
- "The Exorcist",
- "How the west was won",
- "The Big Lebowski"
- );
- // Begin met een leeg array van foutberichten en inputvelden.
- $errors = array();
- $naamFout = $emailFout = $leeftijdFout = "";
- /*
- * Logica om het juiste te doen op basis van
- * request methode
- */
- if ($_SERVER['REQUEST_METHOD']=='POST') {
- //Als er fouten opgetreden zijn in valideerForm() geef deze dan door aan toonForm().
- //Een lege array wordt door php geïnterpreteerd als false!
- if ($formErrors = valideerForm()) {
- toonForm($formErrors);
- } else {
- verwerkForm();
- }
- } else {
- toonForm();
- }
- //Doe iets wanneer het formulier gestuurd is.
- function verwerkForm() {
- echo "<p>Hallo, ".$_POST['mijnNaam']."</p>";
- echo "<p>Je mailadres is: ".$_POST['email']."</p>";
- echo "<p>Je leeftijd is: ".$_POST['leeftijd']."</p>";
- echo "<p>Je waardeert de film ".$_POST['film']." met een: ".$_POST['score']."</p>";
- }
- /*
- * We gaan nu het formulier op een andere manier invoegen om het mogelijk te maken
- * om reeds ingevoerde waardes te blijven tonen zodat de gebruiker dit niet
- * nogmaals moet doen i.g.v. fouten in de invoer.
- */
- function toonForm($errors){
- if ($errors) {
- echo "Corrigeer de volgende fouten s.v.p. <ul><li>";
- echo implode('</li><li>',$errors);
- echo "</li></ul>";
- }
- //Zorgen dat $filmMenu overal beschikbaar is.
- $GLOBALS['filmMenu'] = genereerFilmMenu($GLOBALS['films']);
- //Het formulier hier invoegen met require_once.
- require_once "register.php";
- }
- /*
- * Validatie van gebruikersinvoer is één van de belangrijkste taken van een Web programmeur.
- * Dit is de grootste bron van beveilingslekken. Denk aan bv. SQL injectie of Javascript Injectie.
- * Voer maar eens: <script>alert("Hallo!");</script> in het invoerveld in. Chrome zal een foutmelding geven
- * maar oude browsers zullen dit accepteren.
- *
- * Ook al kun je veel op browserniveau afvangen. Het is belangrijk dat er ook op Serverniveau
- * goede validatie plaatsvindt. Dus op meer niveaus moet er validatie plaatsvinden.
- */
- function valideerForm(){
- //De functie trim() haalt eventuele spaties voor en na de tekst weg.
- //de ?? '' zorgt er voor dat als er niets is ingevuld, een lege String wordt gebruikt.
- $input['mijnNaam'] = trim($_POST['mijnNaam'] ?? '');
- if (strlen($input['mijnNaam'])== 0){
- $GLOBALS['naamFout'] = "De naam moet ingevuld zijn";
- $errors[] = "De naam moet ingevuld zijn";
- }
- if (strlen($input['mijnNaam'])<3) {
- $GLOBALS['naamFout'] = "De naam moet meer dan 2 karakters hebben";
- $errors[] = "De naam moet meer dan 2 karakters hebben";
- }
- /*
- * Email kan gecontroleerd worden met de functie filter_input().
- * Hwet argument INPUT_POST geeft aan dat er in de $_POST array gekeken
- * moet worden naar het veld wat in de tweede parameter gegeven is. In dit
- * geval is dat: $_POST['email']
- * PHP heeft een aantal default filters gedefinieerd. FILTER_VALIDATE_EMAIL
- * controleert of het emailadres correct geformatteerd is.
- *
- */
- $input['email']=filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL);
- if (! $input['email']){
- $GLOBALS['emailFout'] = "Geef s.v.p. een geldig emailadres op";
- $errors[] = "Geef s.v.p. een geldig emailadres op";
- }
- /*
- * Om de leeftijd te controleren gebruiken we ook de filter_input functie.
- * We kijken nu naar het veld $_POST['leeftijd']. We passen het default filter
- * voor integers toe. We geven ook een min en max waarde op door een vierde
- * parameter mee te geven: een tabel met de sleutel: options en met de waarde een tabel
- * met de daadwerkelijke opties en waardes.
- */
- $input['leeftijd']=filter_input(INPUT_POST,'leeftijd',FILTER_VALIDATE_INT,
- array('options' => array('min_range' => 18,
- 'max_range' => 65)));
- if (is_null($input['leeftijd']) || ($input['leeftijd']=== false)) {
- $GLOBALS['leeftijdFout'] = "De leeftijd moet tussen 18 en 65 liggen";
- $errors[] = "De leeftijd moet tussen 18 en 65 liggen";
- }
- //Geef de, mogelijk lege, array terug.
- return $errors;
- }
- /*
- * Deze functie genereert een keuzelijst waaruit gekozen kan worden.
- * @param $films: de lijst met films waaruit gekozen kan worden.
- * @return de html die de lijst met opties geeft.
- */
- function genereerFilmMenu($films) {
- $html = '';
- foreach ($films as $film) {
- $html .= "<option>$film</option></br>";
- }
- return $html;
- }
- ?>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement