Les formulaires constituent une des seules façons d'établir un dialogue interactif avec l'utilisateur en mettant à sa disposition divers types de zones de saisie qu'il peut utiliser pour envoyer des informations au serveur pour traitement.

Les formulaires sont donc utilisés massivement dans tous les développements de web dynamique et en constituent un des mécanismes de base qu'il faut parfaitement connaître et maîtriser.

### Récupération de POST

Dans l'exemple suivant, nous allons utiliser la plupart des zones qu'il est possible (pour le moment) de trouver dans un formulaire, et voir comment nous pouvons les récupérer dans un script PHP.

C'est avec la méthode POST que le formulaire enverra les données saisies au serveur et donc au script PHP. Saisissez des données dans les différentes zones puis cliquez sur le bouton "Envoyer".

Formulaire HTML côté client

Nom Identifiant Cursus
Année L2 L3 M1 M2 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('Zones du formulaire dans $_POST'); foreach ($_POST as $nom => $valeur) { htmlInfo($nom); echo $valeur; } htmlFin(); ?>

Comme le formulaire est envoyé avec une méthode POST, le traitement avec PHP va porter sur le tableau associatif superglobal $_POST.

Quand on regarde le résultat du traitement effectué sur la soumission du formulaire, on constate bien que le nom des zones défini dans le code HTML du formulaire (voir valeur des attributs name) est devenu une des clé du tableau $_POST, et que la valeur associée à cette clé est ce qui a été saisi dans la zone correpondante du formulaire.

On notera aussi que même si rien n'est saisi dans une zone, elle est quand même envoyée au serveur, SAUF pour les cases à cocher : si la case n'est pas cochée, rien n'est envoyé.

La zone "Identifiant" est censée contenir un nombre, mais rien n'empêche d'y saisir autre chose.

Le "contenu" (attribut value du bouton submit qui a servi à envoyer (soummettre) le formulaire se trouve également dans les éléments reçus. C'est très important car comme on le verra plus tard, cela va nous permettre de décider quelle action effectuer dans notre script suivant la valeur de ce bouton, ou suivant sa présence ou non dans le tableau $_POST.

### Récupération de GET

Pour cet exemple, nous allons simplement remplacer method="POST" par method="GET" dans le code HTML, et remplacer la lecture du tableau $_POST par la lecture du tableau $_GET dans le script PHP.

    <?php
    require('bib_fonctions.php');

    htmlDebut('Zones du formulaire dans $_GET');

    foreach ($_GET as $nom => $valeur) {
    	htmlInfo($nom);
    	echo $valeur;
    }

    htmlFin();
    ?>

Quand vous allez cliquer sur le bouton "Envoyer" après avoir saisi des informations, un nouvel onglet va s'ouvrir dans votre navigateur avec le résultat du traitement par PHP. Ainsi vous pourrez voir dans la barre d'url que les informations ont été passées au serveur à la suite de l'url

Formulaire HTML côté client

Nom Identifiant Cursus
Année L2 L3 M1 M2 Langage préféré
Aimerait plus de cours magistraux
plus de cours en ligne
plus de TD
plus de TP

Regardez dans la barre d'URL du navigateur, et vous verrez que les couples nom/valeur sont lisibles, en particulier la zone cachée et la zone de type password.

Ces informations sont aussi directement modifiables dans l'url. Vous pouvez par exemple remplacer ce qui se trouve après le ? par envoyer='importe quoi&sécurité=inexistante puis valider par la touche "Entrée" de votre clavier. Les éléments ainsi saisis sont transmis au script qui va les traiter comme s'ils venaient du formulaire.

Je vous déconseille donc d'utiliser la méthode GET pour transmettre des informations, à moins de mettre en place des procédures très stricts pour le contrôle et la validation des données reçues.