Publié le 6 novembre 2026 · Mis à jour le 6 novembre 2026 · Signaler une erreur
L'essentiel
Un formulaire s'écrit avec la balise <form>, qui précise l'URL de destination (attribut action) et la méthode d'envoi (attribut method, GET ou POST). 2
Avec GET, les données voyagent en clair dans la barre d'adresse du navigateur. 1
Avec POST, les données sont placées dans le corps de la requête : elles sont moins visibles. 1
Côté serveur, un script PHP retrouve les données dans $_GET ou $_POST, selon la méthode choisie dans le formulaire. 2
Avant de commencer
Ce quiz vérifie que tu maîtrises le fonctionnement d'un formulaire HTML quand on clique sur le bouton d'envoi. Il couvre le rôle de la balise <form>, la différence entre les méthodes GET et POST, la façon dont les données sont encodées dans la requête HTTP, et la manière dont un script PHP les récupère.
Tu connais déjà HTML et CSS, les événements en JavaScript et le dialogue client-serveur avec le protocole HTTP. Les questions s'appuient sur ces bases : une requête HTTP part du navigateur (le client) vers le serveur, qui renvoie une réponse. Un formulaire est une façon de fabriquer une requête à partir de ce que l'utilisateur saisit.
Rappels pour démarrer
Quiz
15 questions · correction immédiate · ton score reste sur ton appareil.
Les formulaires sont inclus dans l'élément <form>, qui précise l'URL de destination et la méthode d'envoi. 2 La balise <input> crée seulement un champ de saisie à l'intérieur du formulaire : elle ne suffit pas à définir où et comment envoyer les données. <table> sert à présenter des données en tableau et <submit> n'est pas une balise HTML.
Dans la balise <form>, on ajoute la méthode HTTP utilisée et le lien activé lors de l'envoi, qui correspond à l'attribut action. 1 Avec PHP, l'URL du script cible est justement indiquée dans cet attribut. 2 L'attribut method, souvent choisi par erreur, donne la manière d'envoyer (GET ou POST), pas la destination.
Quand un formulaire part en GET, le navigateur écrit les valeurs saisies directement dans l'adresse affichée en haut de la fenêtre, lisibles par quiconque regarde l'écran. 1 Le corps de la requête est le chemin de la méthode POST, ce qui rend cette réponse tentante mais fausse ici. 1
C'est vrai : avec POST, les valeurs saisies sont rangées dans le corps de la requête HTTP et n'apparaissent pas dans l'adresse, ce qui les rend moins visibles qu'avec GET. 1 Penser qu'elles apparaissent dans la barre d'adresse revient à confondre POST avec GET.
La liste des méthodes HTTP comprend GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE et PATCH. 1 GET, HEAD et PATCH y figurent donc. SEND, en revanche, n'existe pas dans cette liste : le mot évoque l'envoi, ce qui le rend plausible, mais l'envoi d'une ressource se fait avec POST. 1
HEAD permet d'obtenir seulement l'en-tête de la réponse. 1 Elle ne renvoie donc pas la page entière, contrairement à ce qu'on pourrait croire en la confondant avec GET. L'envoi d'une ressource relève de POST 1, et la suppression d'une ressource de DELETE.
Le fichier PHP cible accède aux données par $_POST ou $_GET, selon la valeur de l'attribut method. 2 Ici la méthode est POST, donc $_POST. $_GET serait le bon choix pour un formulaire en GET, d'où la tentation de se tromper. Les variables $_FORM et $_HEAD n'existent pas en PHP.
Le script accède aux données via $_POST ou $_GET selon la valeur de l'attribut method. 2 Avec GET, c'est $_GET. Utiliser $_POST ici serait l'erreur classique : la variable doit correspondre à la méthode du formulaire.
C'est faux. Avec POST, les données sont dans le corps de la requête et donc moins visibles. 1 C'est avec GET qu'elles apparaissent en clair dans la barre d'adresse. 1
Le type MIME par défaut est application/x-www-form-urlencoded. 2multipart/form-data existe aussi, mais comme encodage alternatif et non par défaut. 2text/plain existe aussi pour les formulaires mais n'est pas le type par défaut, et image/png désigne une image, pas un encodage de formulaire.
Dans cet encodage, les espaces sont remplacés par + plutôt que par %20. 2 La réponse %20 est tentante, car elle correspond au codage en pourcentage général des URI, mais l'encodage des formulaires s'en écarte sur ce point. 2
C'est faux. Un autre encodage est disponible : le type de média multipart/form-data. 2 Le type par défaut n'est donc pas une obligation.
POST permet d'envoyer une ressource au serveur et est souvent utilisée lors du remplissage d'un formulaire. 1 HEAD ne récupère que l'en-tête de la réponse, ce qui exclut tout envoi de ressource. 1
L'élément <form> permet de spécifier la méthode de soumission des données, GET ou POST. 2 PUT, DELETE et HEAD font partie des méthodes HTTP en général, mais un formulaire HTML ne permet de choisir que GET ou POST. 2
Avec GET, les données sont transmises en clair dans la barre d'adresse, ce qui exposerait le mot de passe à l'écran. Avec POST, elles sont dans le corps de la requête, donc moins visibles. 1 La réponse sur les deux méthodes identiques ignore cette différence de visibilité. Attention toutefois : « moins visibles » ne veut pas dire invisibles ni protégées, les données restent lisibles dans la requête. 1
Les questions qu'on se pose
Quelle différence retenir entre GET et POST pour un formulaire ?
Retiens où voyagent les données. Avec GET, elles sont transmises en clair dans la barre d'adresse du navigateur. Avec POST, elles sont placées dans le corps de la requête et sont donc moins visibles. 1 Dans les deux cas, le serveur les reçoit dans une requête HTTP. 2
Comment un script PHP récupère-t-il ce que l'utilisateur a saisi ?
L'URL du script est indiquée dans l'attribut action de la balise <form>. Le script lit ensuite les données avec $_POST ou $_GET, selon la valeur de l'attribut method du formulaire. 2 Si tu changes la méthode dans le formulaire, change aussi la variable lue dans le script.
Pourquoi y a-t-il des « + » à la place des espaces dans les données envoyées ?
C'est une règle d'encodage. Les noms et valeurs des champs sont encodés avant d'être envoyés dans la requête HTTP. Avec le type par défaut application/x-www-form-urlencoded, les espaces sont remplacés par + plutôt que par %20. 2