§ 6 Validatie van formuliergegevens met PHP
PHP String functies zijn erg nuttig om aan de server kant formuliergegevens te valideren. Daarbij is de multipass script techniek erg behulpzaam:
Het maken van een formulier, de validatiecode en de actie in één script
Als het script voor de eerste keer wordt uitgevoerd verschijnt een leeg formulier.
Als je op de knop drukt, wordt het script opnieuw aangeroepen. Als de data niet correct zijn, wordt het formulier weer getoond (met de gegevens die wel juist zijn, zodat de gebruiker die niet nog een keer hoeft in te vullen) samen met een foutmelding erbij.
Als de ingevulde gegevens correct zijn wordt de eigenlijke scriptactie uitgevoerd.
Typ onderstaande code over in je editor en sla het bestand op in de map werkboek als formuliervalidatie.php
<html> <head> <title>Voorbeeld van een formulier validatie</title> </head> <body> <?php $naam = addslashes($_POST["naam"]); $email = addslashes($_POST["email"]); $opnieuw = addslashes($_POST["opnieuw"]); if ($naam && $email) { ?> <p>Welkom op onze website <b><?php print($naam); ?></b></p> <?php } else { ?> <form method="POST" action="formuliervalidatie.php"> <input type="hidden" name="opnieuw" value="yes"> <p><strong>Naam: </strong> <input type="text" name="naam" value="<?php print( $naam ); ?>" size="40"></p> <?php if ( !$naam && $opnieuw ) print( "<b style=\"color:red\">** je moet nog je naam invullen!</b>" ); ?> <p><strong>E-mail:</strong> <input type="text" name="email" value="<?php print( $email ); ?>" size="30"></p> <?php if ( !$email && $opnieuw ) print( "<b style=\"color:red\">** Je moet nog je e-mailadres invullen!</b>" ); ?> <p><input type="submit" value="Log in"> <input type="reset" value="Wis"></p> </form> <?php } ?> </body> </html>
Als je het script runt, krijg je een formulier te zien dat er ongeveer zo uitziet:

Probeer het script uit door niet alle gegevens in te vullen en klik vervolgens op Log in:
Vul niets in
Vul alleen je naam in
Vul alleen je e-mailadres in
Je krijgt dan een scherm te zien dat er ongeveer zo uitziet:

Hoe werkt het?
Bij de eerste keer aanroepen van het script hebben de variabelen $naam, $email en $opnieuw geen waarde.
- De eerste voorwaarde (bij if) is alleen maar waar als in beide invoervelden de gegevens zijn ingevuld. Let er wel op dat in beide velden ook onzin kan worden ingevuld om het script toch te laten werken.
if ($naam && $email) { ……… }
Dit resulteert in het bericht: Welkom op onze website …… waarbij op de plaats van de puntjes de op het formulier ingevulde naam wordt weergegeven.
De verborgen variabele opnieuw krijgt de waarde yes toegekend als de Login knop op zijn minst één keer is ingedrukt.
<input type="hidden" name="opnieuw" value="yes">
- Als de Login knop is ingedrukt en de naam heeft geen waarde dan is de volgende voorwaarde waar:
if (!$naam && $opnieuw) { ……… }
Er verschijnt in rood onder het naamvenster een foutmelding dat de naam nog moet worden ingevuld
- Als de Login knop is ingedrukt en het e-mailadres is nog niet ingevuld dan is de volgende voorwaarde waar:
if (!$email && $opnieuw) { ……… }
Er verschijnt in rood onder het naamvenster een foutmelding dat het e-mailadres nog moet worden ingevuld.
- Als bij het aanroepen van het script meteen daarna de Login knop wordt ingedrukt zonder dat er ook maar iets is ingevuld worden beide foutmeldingen weergegeven.