Nous en avons déjà parlé dans les 2 pages précédentes : il faut vérifier les données reçues de zones qui ne permettent pas directement de saisir des informations :

- les boutons radio
- les cases à cocher
- les listes déroulantes.

Quand ces zones doivent contenir des valeurs numériques, on peut leur appliquer les tests sur les types numériques.

On peut aussi utiliser une autre méthode pour vérifier que les données reçues sont bien dans la plage de celles attendues: mettre les valeurs attendues dans un tableau et tester si la valeur reçue se trouve bien dans le tableau.

Exemple de valeurs non saisissables

Langage préféré
Aimerait plus de cours magistraux
plus de cours en ligne
plus de TD
plus de TP
Traitement du formulaire côté serveur
<?php require('bib_fonctions.php'); htmlDebut('Valider une zone non saisissable'); htmlInfo('Test du langage préféré'); $t = array('C ++', 'Java', 'PHP', 'Aucun'); if (in_array($_POST['lisLangage'], $t)) { echo 'Ok'; } else { echo 'Surveiller adresse IP, valeur corrompue'; } htmlFin(); ?>

Utiliser un tableau avec les valeurs permises fonctionne aussi très bien avec des valeurs numériques qui ne seraient pas consécutives.

Le traitement des zones de cases à cocher est un peu particulier. Si l'utilisateur n'a pas coché la case, aucune information ne sera transmise au serveur et on ne retrouvera rien dans $_POST.

Avant de réaliser des tests sur les valeurs des cases à cocher, il faut donc avant tout savoir si ces valeurs existent dans $_POST (ie si la case à été cochée). En conséquence, on commence par tester avec la fonction isset() si la clé correspondante au nom de la case à cocher (attribut HTML name) se trouve dans le tableau $_POST.

Une fois que l'on est sûr de la présence de l'élément à tester, on peut comparer directement la valeur reçue avec celle attendue.

Exemple de valeurs non saisissables

Langage préféré
Aimerait plus de cours magistraux
plus de cours en ligne
plus de TD
plus de TP
Traitement du formulaire côté serveur
<?php require('bib_fonctions.php'); htmlDebut('Valider une zone non saisissable'); htmlInfo('Test case à cocher 1'); if (isset($_POST['chkCM'])) { if ($_POST['chkCM'] == 'CM') { echo 'Ok'; } else { echo 'Surveiller adresse IP, valeur corrompue'; } } htmlInfo('Test case à cocher 2'); if (isset($_POST['chkCL'])) { if ($_POST['chkCL'] == 'CL') { echo 'Ok'; } else { echo 'Surveiller adresse IP, valeur corrompue'; } } htmlInfo('Test case à cocher 3'); if (isset($_POST['chkTD'])) { if ($_POST['chkTD'] == 'TD') { echo 'Ok'; } else { echo 'Surveiller adresse IP, valeur corrompue'; } } htmlInfo('Test case à cocher 4'); if (isset($_POST['chkTP'])) { if ($_POST['chkTP'] == 'TP') { echo 'Ok'; } else { echo 'Surveiller adresse IP, valeur corrompue'; } } htmlFin(); ?>

Comme vous le voyez, la vérification de cases à cocher est une chose un peu pénible et je vous recommande, dans la mesure du possible, de ne pas utiliser ce type de zone de saisie