Zoals je in de tutorial kunt zien, kun je met filter_input() heel simpel GET en POST waardes valideren. Nu werk ik regelmatig met array's in m'n html en dat geeft problemen:
<?php
$sEmail = filter_input(INPUT_POST, 'afzender']['email'], FILTER_VALIDATE_EMAIL);
// en dan verder verwerken
?>
Dit werkt (natuurlijk) niet, andere varianten die ik reeds heb geprobeerd, werken evenmin. Het punt is dat het een array is en geen string, wat deze functie nodig heeft. Maar om nu eerst de array om te zetten naar een string, dat is niet handig, niemand die kan garanderen dat de array daadwerkelijk bestaat, dat moet dan eerst weer ergens worden gecontroleerd (wil ik eigenlijk pas later doen).

Of zou alleen het alternatief werken?
<?php
$sEmail = filter_var(@$_POST['afzender']['email'], FILTER_VALIDATE_EMAIL);
// en dan verder verwerken
?>
Het heeft mij waarschijnlijk wel op de goede weg gezet, ik denk een oplossing te hebben. De html-array moet anders worden opgebouwd, per soort data/validatie een aparte array:

<form method="post" action="">
<input type="text" name="email[afzender]" size="30" />
<input type="text" name="naam[afzender]" size="30" /><br />
<input type="text" name="email[ontvanger]" size="30" />
<input type="text" name="naam[ontvanger]" size="30" /><br />

<br />
<button type="submit">Test</button>
</form> 

Nu kun je in 1 keer de array email gaan valideren met het email-filter en de array naam met een string-filter.

Ik denk dat dit wel gaat lukken. Bedankt voor de inspiratie!

Reageren