Aller au contenu

Numérique et sciences informatiques (spécialité) · Première

Formulaires : méthodes GET et POST, cours de Première NSI

Publié le 6 novembre 2026 · Mis à jour le 6 novembre 2026 · Signaler une erreur

L'essentiel

  • Un formulaire s'écrit avec la balise <form> ; ses attributs method (GET ou POST) et action (cible de l'envoi) décident de ce qui part et où. 2
  • Avec GET, les données voyagent en clair dans l'adresse affichée par le 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 lit les données dans $_GET ou $_POST, selon la méthode choisie. 2
  • Réflexe de choix : GET pour une requête qu'on peut partager ou retrouver dans l'adresse, POST pour envoyer une ressource ou remplir un formulaire.

Pourquoi des formulaires ?

Jusqu'ici, tu as vu qu'une page web est décrite en HTML, mise en forme en CSS, et rendue vivante par des événements JavaScript. Tu as aussi vu que le navigateur (le client) dialogue avec un serveur grâce au protocole HTTP. Il manque un maillon : comment l'utilisateur envoie-t-il de l'information au serveur ? Quand tu t'inscris sur un site, que tu lances une recherche ou que tu réponds à un questionnaire, c'est presque toujours un formulaire qui s'en charge.

Dans ce cours, tu vas comprendre ce qui se passe entre le moment où tu cliques sur « Envoyer » et celui où le serveur reçoit tes données. Tu verras les deux méthodes HTTP utilisées pour cela, GET et POST, leurs différences visibles, et comment un programme côté serveur récupère ce qui a été saisi.

Rappel : les méthodes HTTP

Quand le navigateur contacte un serveur, il envoie une requête HTTP. Cette requête commence par indiquer une méthode, c'est-à-dire le type d'action demandée. Le protocole en propose plusieurs : GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE et PATCH. 1

Pour les formulaires, seules deux méthodes comptent : GET et POST. 2 Les autres existent, mais un formulaire HTML ne les utilise pas pour soumettre ses données.

Pour situer les choses, voici ce que dit le programme sur deux d'entre elles. La méthode HEAD permet d'obtenir seulement l'en-tête de la réponse, sans le contenu de la page. La méthode POST permet d'envoyer une ressource au serveur et elle est souvent employée quand on remplit un formulaire. 1 GET, elle, sert d'abord à demander une ressource : c'est celle que ton navigateur utilise quand tu tapes une adresse ou que tu cliques sur un lien.

La balise form et ses attributs

Un formulaire est contenu dans l'élément HTML <form>. Cet élément précise deux choses : l'URL vers laquelle les données saisies doivent être envoyées, et la méthode de soumission, GET ou POST. 2 Le programme formule la même idée : dans la balise, on indique la méthode HTTP utilisée et le lien qui sera activé lors de l'envoi. 1

Ces deux informations se placent dans des attributs :

  • action : l'adresse de la ressource qui va traiter les données (souvent un script côté serveur) ;
  • method : la méthode HTTP, get ou post.
Du clic à la réponse du serveurQuatre étapes : saisie des champs, encodage, requête HTTP, lecture par le script PHP.1SaisieL'utilisateur remplit les champs du formulaire.2EncodageChaque name est associé à sa valeur.3RequêteGET : dans l'adresse. POST : dans le corps.4TraitementLe script lit $_GET ou $_POST.
  1. SaisieL'utilisateur remplit les champs du formulaire.
  2. EncodageChaque name est associé à sa valeur.
  3. RequêteGET : dans l'adresse. POST : dans le corps.
  4. TraitementLe script lit $_GET ou $_POST.
Du clic à la réponse du serveur · Le parcours des données d'un formulaire.

La méthode GET : des données dans l'adresse

Avec la méthode GET, les données du formulaire sont transmises en clair dans la barre d'adresse du navigateur. 1 Cela signifie que tu peux les lire en regardant l'URL après l'envoi.

Prenons le formulaire précédent. Si l'utilisateur saisit Ada dans le champ prenom, l'adresse affichée après l'envoi ressemble à ceci :

traitement.php?prenom=Ada

Après l'adresse du script, on trouve un signe ?, puis des paires nom=valeur. Avec plusieurs champs, les paires sont séparées par le caractère &, par exemple traitement.php?prenom=Ada&classe=1ere. Ce découpage est une illustration : l'essentiel à retenir est que le nom du champ et sa valeur apparaissent dans l'adresse.

La méthode POST : des données dans le corps de la requête

Avec la méthode POST, les données ne sont pas collées à l'adresse. Elles sont transmises dans le corps de la requête, ce qui les rend moins visibles. 1 L'adresse affichée par le navigateur reste simplement traitement.php, sans ? ni paires nom=valeur.

Une requête HTTP se compose d'une ligne de départ, d'en-têtes, puis éventuellement d'un corps. Avec GET, tout ce qu'il faut tient dans la première ligne (l'adresse). Avec POST, on place le contenu à envoyer dans ce corps. On peut se représenter la requête comme une enveloppe : GET écrit le message sur l'enveloppe, POST le glisse à l'intérieur.

Comment les données sont encodées

Les données saisies ne partent pas telles quelles : elles sont encodées. Les noms et les valeurs des éléments de formulaire sont encodés puis envoyés au serveur dans un message de requête HTTP, avec GET ou POST. 2

L'encodage par défaut porte le nom de type MIME application/x-www-form-urlencoded. Il repose sur de très anciennes règles de codage en pourcentage des URI, avec quelques modifications : les retours à la ligne sont normalisés et les espaces sont remplacés par le signe + au lieu de %20. 2 Un autre encodage existe, multipart/form-data, qui est courant dans certains cas, notamment pour l'envoi de fichiers. 2

Côté serveur : récupérer les données avec PHP

Envoyer des données ne sert à rien si personne ne les lit. Côté serveur, c'est un programme qui s'en charge. Le programme de NSI prend l'exemple de PHP : l'URL du script PHP est indiquée dans l'attribut action de la balise form. 2

Le fichier PHP visé accède ensuite aux données transmises par le formulaire grâce aux variables $_POST ou $_GET, selon la valeur de l'attribut method du formulaire. 2 Autrement dit :

Attribut method Variable PHP à lire
get $_GET
post $_POST

Le programme précise que, si la méthode d'envoi est POST, PHP peut récupérer le texte saisi et l'afficher. 1

Choisir entre GET et POST

Les différences vues jusqu'ici permettent de décider. Deux critères suffisent à ce niveau : la visibilité des données et la nature de l'action.

GET et POST côte à côte
CritèreGETPOST
Emplacement des donnéesBarre d'adresseCorps de la requête
VisibilitéEn clair dans l'adresseMoins visibles
Variable PHP$_GET$_POST
Usage typiqueDemander une réponseEnvoyer une ressource
GET et POST côte à côte · Synthèse des différences à connaître.

Méthode de résolution d'un exercice type

Au bac ou en contrôle, une question sur les formulaires suit presque toujours le même schéma : on te donne un extrait HTML, un extrait PHP, ou une adresse affichée, et on te demande d'expliquer ou de compléter.

Erreurs fréquentes et points de vigilance

Exercices corrigés

Exercice 1 Lire un formulaire

★☆☆Environ 8 min

On donne le formulaire suivant :

<form action="login.php" method="post">
  <input type="text" name="identifiant">
  <input type="password" name="code">
  <input type="submit" value="Entrer">
</form>
  1. Quelle est la méthode utilisée ?
  2. Qu'affiche la barre d'adresse après l'envoi, hors nom de domaine ?
  3. Quelles variables PHP faut-il lire pour récupérer les valeurs ?
Indice 1

Regarde l'attribut method.

Indice 2

Avec POST, il n'y a pas de paires nom=valeur dans l'adresse.

Voir la correction pas à pas
  1. La balise <form> contient method="post" : la méthode est POST.

  2. Avec POST, les données sont dans le corps de la requête et non dans l'adresse. L'adresse affichée est donc simplement login.php.

  3. Le script lit $_POST['identifiant'] et $_POST['code'], car les clés correspondent aux attributs name.

On repère toujours method et name en premier : ils donnent la méthode et les clés à lire.

Exercice 2 Reconstituer l'adresse

★☆☆Environ 8 min

Un formulaire utilise action="resultat.php" et method="get". Il contient deux champs : ville (l'utilisateur écrit Le Mans) et age (il écrit 16).

Écris l'adresse obtenue après l'envoi, hors nom de domaine, puis dis comment PHP lit la valeur de ville.

Indice 1

Les paires nom=valeur sont séparées par &.

Indice 2

Un espace est remplacé par + dans l'encodage par défaut.

Voir la correction pas à pas
  1. La méthode est GET : les données sont placées dans l'adresse, après un ?.

  2. La valeur Le Mans contient un espace, remplacé par + : Le+Mans.

  3. L'adresse est resultat.php?ville=Le+Mans&age=16.

  4. Le script lit $_GET['ville'] et $_GET['age'], car la méthode est GET.

Pour GET, on construit l'adresse avec ?, nom=valeur, & et +.

Exercice 3 Corriger un script PHP

★★☆Environ 10 min

Un élève écrit ce formulaire :

<form action="accueil.php" method="post">
  <input type="text" name="prenom">
  <input type="text" name="nom">
  <input type="submit" value="OK">
</form>

et ce script accueil.php :

<?php echo "Salut " . $_GET['prenom'] . " " . $_GET['nom']; ?>

Les noms n'apparaissent jamais. Explique pourquoi et propose deux corrections possibles.

Indice 1

Compare la méthode du formulaire à la variable lue.

Indice 2

Tu peux modifier le HTML ou le PHP.

Voir la correction pas à pas
  1. Le formulaire utilise POST : les données sont dans le corps de la requête.

  2. Le script lit $_GET et non $_POST, qui contient les données : la variable ne correspond pas à la méthode.

  3. Correction 1 : remplacer $_GET par $_POST dans le script.

  4. Correction 2 : remplacer method="post" par method="get" dans le formulaire, sachant que les valeurs seront alors visibles dans l'adresse.

La méthode du formulaire et la variable PHP lue doivent toujours correspondre.

Exercice 4 Choisir la méthode adaptée

★★☆Environ 10 min

Pour chaque cas, indique GET ou POST et justifie en une phrase :

  1. un formulaire de recherche de livres dans une bibliothèque en ligne ;
  2. un formulaire d'inscription avec mot de passe ;
  3. un filtre de produits dont on veut pouvoir envoyer l'adresse à un ami.
Indice 1

Demande-toi si les données doivent apparaître dans l'adresse.

Indice 2

Demande-toi si on veut partager le résultat.

Voir la correction pas à pas
  1. Recherche de livres : GET, car la requête ne fait que demander une réponse et l'adresse peut être partagée.

  2. Inscription avec mot de passe : POST, car les données ne doivent pas apparaître dans la barre d'adresse.

  3. Filtre partageable : GET, car l'adresse contient les critères et permet à l'ami de retrouver exactement les mêmes résultats.

GET quand l'adresse doit porter la demande, POST quand les données ne doivent pas y figurer.

Exercice 5 Décoder une adresse

★★★Environ 12 min

Après l'envoi d'un formulaire, l'adresse est :

commande.php?produit=carte+mere&quantite=2&livraison=express

  1. Quelle méthode a été utilisée ?
  2. Combien de champs le formulaire a-t-il transmis ?
  3. Quelle est la valeur du champ produit ?
  4. Écris le code PHP qui affiche la valeur de quantite.
Indice 1

Compte les signes & et ajoute 1.

Indice 2

Le + remplace l'espace.

Voir la correction pas à pas
  1. Les données sont dans l'adresse : la méthode est GET.

  2. Il y a deux signes &, donc trois paires : le formulaire a transmis trois champs.

  3. La valeur de produit est carte mere, avec un espace à la place du +.

  4. Le code est <?php echo $_GET['quantite']; ?>, car la méthode est GET et non $_POST.

Une adresse GET se lit paire par paire, en remplaçant + par un espace.

Quiz

6 questions · correction immédiate · ton score reste sur ton appareil.

  1. Où se trouvent les données d'un formulaire envoyé avec la méthode GET ?

  2. Quelle variable PHP permet de lire les données d'un formulaire dont la méthode est POST ?

  3. Que précise l'attribut action de la balise form ?

  4. Avec POST, les données sont placées dans le corps de la requête et sont donc plus visibles que celles de GET.

  5. Par quel caractère l'espace est-il remplacé dans l'encodage par défaut des formulaires ?

  6. Parmi ces affirmations, lesquelles sont exactes ? (plusieurs réponses)

    Plusieurs réponses possibles.

Les questions qu'on se pose

Quelle est la différence principale entre GET et POST pour un formulaire ?

L'endroit où partent les données. Avec GET, elles sont transmises en clair dans la barre d'adresse. 1 Avec POST, elles sont dans le corps de la requête et donc moins visibles. 1

POST est-il sécurisé ?

Le programme dit que POST rend les données moins visibles, pas qu'il les protège. 1 Retiens la formule exacte : avec POST, les données ne figurent pas dans l'adresse. Ne confonds pas ce constat avec une garantie de confidentialité.

Comment PHP récupère-t-il ce que l'utilisateur a saisi ?

L'adresse du script est indiquée dans l'attribut action. Le script lit ensuite les données avec $_GET ou $_POST, selon la valeur de method. 2 La clé utilisée est le name du champ.

Pourquoi mon champ n'arrive-t-il pas au serveur ?

Vérifie trois points : le champ a-t-il un attribut name, la méthode du formulaire correspond-elle à la variable lue ($_GET ou $_POST), 2 et l'attribut action pointe-t-il vers le bon script ? Ce sont les trois causes les plus fréquentes.

Qu'est-ce que l'encodage `multipart/form-data` ?

C'est un second type d'encodage possible pour les données d'un formulaire, à côté de l'encodage par défaut. 2 Au programme de Première, l'essentiel est de savoir que l'encodage par défaut remplace les espaces par +. 2

Sources

  1. Document pédagogique Éduscol NSI — Programme complet, Éduscol — Ministère de l'Éducation nationale. Consulté le 6 novembre 2026.
  2. Formulaire HTML, Wikipédia. Consulté le 6 novembre 2026.

Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2 Bientôt
  • CM1 Bientôt
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page