Edu'Actief

Invoer van formulieren controleren

Op webpagina's tref je geregeld invulformulieren aan. Via deze formulieren kan de bezoeker van de webpagina informatie doorgeven. Meestal wordt die informatie opgeslagen in een database.
Natuurlijk is het niet de bedoeling, dat een willekeurige bezoeker van een webpagina, door op de verzendknop te drukken, allerlei onzin kan opsturen. Daarom worden er vaak PHP-scripts gebruikt om de inhoud van het formulier te controleren.
Hieronder zie je een invulformulier, dat je kunt gebruiken om je te abonneren op de Citroën nieuwsbrief. Een script controleert of de bezoeker een correct email-adres heeft ingevuld:

Het invulformulier op de Citroën site We vullen alleen maar onzin in, het script geeft een rode uitroepteken Het script denkt,dat er sprake is van een bestaand email-adres
We vullen iets in, dat op een email-adres lijkt

In dit digitale practicum bekijken we een paar PHP-scripts, waarmee je invulformulieren kunt beveiligen tegen ongewenste invoer.
Alle scripts, die behandeld worden in de voorbeelden, staan op de cd-rom in de map Blok4 \ PHP_MySQL \ sourcecode \ practicum3.
Om de scripts te kunnen testen moet je de map practicum3 kopiëren naar c:\ webserver \ www \ practicum3.


Kopieer de map Blok4 \ PHP_MySQL \ sourcecode \ practicum3 naar c:\ webserver \ www \ practicum3

Om bijvoorbeeld script1.php te testen surf je naar http://localhost / practicum3 / script1.php.
Wordt het script aangeroepen vanuit pagina1.htm dan kun je het script testen door te surfen naar http://localhost / practicum3 / pagina1.htm.
Wordt het script aangeroepen vanuit pagina1.php dan kun je het script testen door te surfen naar http://localhost / practicum3 / pagina1.php.

SCRIPT 1: Geen lege velden accepteren

Dit script controleert of de bezoeker van de webpagina alle verplichte velden van het invulformulier daadwerkelijk heeft ingevuld.
Wanneer een verplicht veld nog leeg is, dan krijgt de bezoeker een waarschuwing te zien. Wanneer het formulier correct is ingevuld, dan krijgt de bezoeker een bevestiging te zien.

Links zie je de HTML-code van het invulformulier, en rechts zie je script 1:

De HTML-code van het invulformulier Script 1

De bezoeker van de webpagina is vergeten om zijn postcode in te vullen.
De tekst 'Je bent vergeten om je postcode in te vullen!' verschijnt:

De postcode is niet ingevuld Er verschijnt een waarschuwing

De bezoeker van de webpagina heeft het formulier correct ingevuld.
Er verschijnt een bevestiging:

Het formulier is correct ingevuld Er verschijnt een bevestiging

SCRIPT 2: Alleen correcte invoer accepteren

Dit script controleert of de bezoeker van de webpagina een correcte postcode (4 cijfers gevolgd door 2 hoofdletters) heeft ingevuld.
Wanneer de postcode niet correct is, dan krijgt de bezoeker een waarschuwing te zien. Wanneer de postcode wel correct is ingevuld, dan krijgt de bezoeker een bevestiging te zien.

Links zie je de HTML-code van het invulformulier, en rechts zie je script 2:

De HTML-code van het invulformulier Script 2

De bezoeker van de webpagina heeft een foute postcode ingevuld.
De tekst 'Je hebt een foute postcode ingevuld!' verschijnt:

Er is een foute postcode ingevuld Er verschijnt een waarschuwing

SCRIPT 3: Vijandelijke invoer STRIPPEN

Door een formulier te plaatsen op een webpagina, geef je de bezoeker de gelegenheid om ongewenste teksten in te typen en te verzenden
Een bezoeker zou een verwijzing naar een porno-site, of een script waardoor je computer vastloopt, kunnen plaatsen in het formulier.
Het is ongewenst, dat dergelijke tekst in jouw database terecht komt.
In onderstaand voorbeeld tikt de bezoeker van de webpagina als voornaam de tag <table> in. Door deze tekst wordt de uitvoer van script2.php helemaal verbouwd.
Links zie je de (ongewenste) invoer van het invulformulier en rechts het resultaat:

In plaats van de echte voornaam wordt </table> ingetypt De uitvoer is volledig verbouwd!

Er zijn een paar standaard PHP-functies beschikbaar, die je kunnen beschermen tegen allerlei ongewenste invoer uit formulieren.
Links zie je weer de HTML-code van het invulformulier, en rechts zie je script 3:

De HTML-code van het invulformulier Script 3

De bezoeker van de webpagina heeft opnieuw als voornaam <table> ingevuld.
De ongewenste invoer wordt keurig verwijderd, en er wordt om een correcte voornaam gevraagd:

Er is een foute postcode ingevuld Er verschijnt een waarschuwing