Aller au contenu

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

Formulaires GET et POST : exercices corrigés de Première NSI

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

L'essentiel

  • Un formulaire se déclare avec la balise form, qui porte la méthode (GET ou POST) et l'adresse du script cible (action).2
  • Avec GET, les données saisies s'affichent telles quelles dans l'URL du navigateur ; avec POST, elles voyagent dans le corps de la requête, donc moins visibles.1
  • Côté serveur, un script PHP lit les données avec GETou_GET ou _POST, selon la méthode choisie dans le formulaire.2
  • Le choix de la méthode se justifie toujours : ce que l'on envoie, qui peut le voir, et ce que fait la requête.

Comment utiliser ces exercices

Ces exercices portent sur l'envoi des données d'un formulaire vers un serveur. Tu y retrouves ce que tu as vu avec HTML, JavaScript et le protocole HTTP : le navigateur envoie une requête, le serveur répond. Ici, la requête transporte ce que l'utilisateur a saisi dans les champs.

Les exercices sont classés par difficulté croissante. Les premiers demandent de lire un code et de reconnaître la méthode utilisée. Les derniers te demandent de choisir toi-même une méthode, de l'écrire dans un formulaire, puis de récupérer les données avec un script PHP. Cherche d'abord seul·e, avec une feuille ou un éditeur de texte. Ouvre les indices un à un, et ne regarde la correction qu'après avoir écrit une réponse complète.

Les exercices

Exercice 1 Lire un formulaire

★☆☆Environ 5 min

Voici le code d'un formulaire :

<form method="POST" action="traitement.php">
  <input type="text" name="prenom">
  <input type="submit" value="Envoyer">
</form>
  1. Quelle méthode HTTP ce formulaire utilise-t-il ?
  2. Quel fichier reçoit les données lors de l'envoi ?
  3. Sous quel nom la saisie du champ de texte sera-t-elle connue du script ?
  4. Les données seront-elles visibles dans la barre d'adresse après l'envoi ? Justifie.
Indice 1

Les deux informations demandées en 1 et 2 sont des attributs de la balise form.

Indice 2

Pour la question 3, regarde l'attribut name de la balise input.

Voir la correction pas à pas
  1. On lit la balise form : l'attribut method vaut POST. Le formulaire utilise donc la méthode POST.1

  2. L'attribut action vaut traitement.php : c'est le script qui est activé à l'envoi du formulaire.1

  3. Le champ de texte porte name="prenom". Le script retrouvera la saisie sous le nom prenom, par exemple avec $_POST['prenom'] (et non avec $_GET['prenom']).2

  4. Avec POST, les données sont dans le corps de la requête et pas dans la barre d'adresse : elles sont donc moins visibles qu'avec GET.1

Un formulaire se lit toujours dans le même ordre : méthode, cible, puis noms des champs. Ces trois éléments suffisent à prévoir ce qui sera envoyé et où.

Exercice 2 GET ou POST : choisir selon la situation

★☆☆Environ 8 min

Pour chacune des situations suivantes, indique la méthode que tu choisirais pour le formulaire (GET ou POST) et justifie en une ou deux phrases.

  1. Un formulaire de recherche d'un mot dans un site de recettes, où l'on souhaite pouvoir copier l'adresse de la page de résultats pour la transmettre à un ami.
  2. Un formulaire de connexion avec un identifiant et un mot de passe.
  3. Un formulaire d'inscription à un club, avec nom, adresse et date de naissance.
Indice 1

Demande-toi si les données saisies doivent apparaître dans la barre d'adresse.

Indice 2

Rappelle-toi ce que dit le cours sur la visibilité des données pour chaque méthode.

Voir la correction pas à pas
  1. Situation 1 : on veut que la recherche se retrouve dans l'adresse. GET convient, car il affiche les données saisies directement dans l'URL : copier l'adresse revient à copier la recherche.1

  2. Situation 2 : un mot de passe ne doit pas s'afficher dans la barre d'adresse. On choisit POST, qui place les données dans le corps de la requête, donc moins visibles.1

  3. Situation 3 : ce sont des informations personnelles, sans intérêt à figurer dans une adresse. On choisit POST pour la même raison que pour la connexion.1

  4. On remarque que POST est la méthode souvent utilisée lors du remplissage d'un formulaire, tandis que GET sert quand l'adresse peut sans risque contenir les données.1

Le critère de choix est toujours le même : les données peuvent-elles apparaître dans la barre d'adresse sans inconvénient ? Si oui, GET est possible ; sinon, POST.

Exercice 3 Compter les méthodes HTTP

★☆☆Environ 5 min

Le protocole HTTP définit plusieurs méthodes. Dans le désordre, on y trouve : DELETE, PATCH, GET, TRACE, POST, CONNECT, PUT, HEAD et OPTIONS.1

Un formulaire HTML ne propose que deux de ces méthodes pour la soumission des données.2

Combien de méthodes HTTP de cette liste ne sont pas utilisables dans l'attribut method d'un formulaire ?

Indice 1

Commence par compter toutes les méthodes de la liste.

Indice 2

Retire ensuite les deux méthodes que le formulaire accepte.

Voir la correction pas à pas
  1. On compte les méthodes citées dans l'énoncé : DELETE, PATCH, GET, TRACE, POST, CONNECT, PUT, HEAD, OPTIONS, soit 9 méthodes.1

  2. Le formulaire accepte GET ou POST pour la soumission des données : 2 méthodes.2

  3. On retire : 9 - 2 = 7 méthodes ne sont pas utilisables dans l'attribut method du formulaire.

HTTP connaît plus de méthodes que ce que le formulaire HTML permet d'employer. Pour un formulaire, le choix se limite à GET ou POST.

Exercice 4 Prévoir ce qui apparaît dans la barre d'adresse

★★☆Environ 10 min

Un formulaire utilise la méthode GET et l'action traitement.php. Il contient deux champs : prenom et ville. L'élève saisit « Lea » dans le premier et « Aix en Provence » dans le second.

Pour l'exercice, on admet que les données sont ajoutées à l'adresse sous la forme nom=valeur, les couples étant séparés par le signe &, et que les espaces d'une valeur sont remplacés par +.2

  1. Écris la partie de l'adresse qui contient les données (sans traitement.php?), dans l'ordre des champs.
  2. Pourquoi cette partie est-elle visible par quiconque regarde l'écran ?
  3. Combien de caractères comporte cette partie ?
Indice 1

Le remplacement des espaces par + concerne uniquement la valeur « Aix en Provence ».

Indice 2

Compte soigneusement les signes = et & : ce sont aussi des caractères.

Voir la correction pas à pas
  1. Premier couple : prenom=Lea, soit 10 caractères.

  2. Second couple : la valeur « Aix en Provence » devient Aix+en+Provence, car les espaces sont remplacés par +.2 On obtient ville=Aix+en+Provence, soit 6 + 15 = 21 caractères.

  3. On sépare les deux couples par & : prenom=Lea&ville=Aix+en+Provence.

  4. Avec GET, la saisie est écrite telle quelle dans l'URL : toute personne qui voit l'écran ou l'historique du navigateur peut la lire.1

  5. Le total est de 10 + 1 + 21 = 32 caractères.

Avec GET, tout ce que l'élève a saisi se lit directement dans l'adresse. C'est pratique pour partager une recherche, mais inadapté dès que les données sont personnelles.

Exercice 5 Récupérer une saisie en PHP

★★☆Environ 12 min

Un formulaire envoie un champ nommé first-name vers le script accueil.php.

  1. Écris la balise form avec la méthode POST et la bonne action, puis le champ de saisie et le bouton d'envoi.
  2. Écris, dans accueil.php, une ligne PHP qui affiche « Bonjour » suivi du contenu du champ.
  3. Que faudrait-il modifier dans le script si le formulaire passait en GET ?
Indice 1

L'URL du script PHP est donnée dans l'attribut action de la balise form.

Indice 2

Les variables PHP qui contiennent les données portent un nom qui rappelle la méthode.

Voir la correction pas à pas
  1. Dans la balise form, on place la méthode et le lien activé à l'envoi :

    <form method="POST" action="accueil.php">
      <input type="text" name="first-name">
      <input type="submit" value="Envoyer">
    </form>
    

    L'URL du script PHP est bien spécifiée dans l'attribut action.2

  2. Dans accueil.php, le script accède aux données par $_POST, puisque la méthode du formulaire est POST :

    <?php
    echo "Bonjour " . $_POST['first-name'];
    ?>
    

    Le fichier PHP cible lit les données avec $_POST ou $_GET, selon la valeur de l'attribut method.2

  3. Si le formulaire passait en GET, il faudrait remplacer $_POST par $_GET dans le script, et la méthode du formulaire par GET.2

Le nom du champ (name) sert de clé dans $_POST ou $_GET. Changer de méthode oblige à changer la variable lue, et donc à modifier les deux fichiers de manière cohérente.

Exercice 6 Trouver pourquoi le script n'affiche rien

★★☆Environ 10 min

Un élève écrit le formulaire suivant :

<form method="POST" action="resultat.php">
  <input type="text" name="mot">
  <input type="submit" value="Chercher">
</form>

Dans resultat.php, il écrit :

<?php
if (isset(GET_MOT)) {
  echo "Tu as cherché : " . GET_MOT;
}
?>

Dans ce script, GET_MOT désigne la valeur lue avec la variable PHP GET, à la clé mot. La page affichée ne contient pas le mot saisi.

  1. Explique l'origine du problème.
  2. Propose deux corrections différentes.
  3. Dans chaque cas, dis ce que l'on verra dans la barre d'adresse après l'envoi.
Indice 1

Compare la méthode déclarée dans le formulaire avec la variable lue dans le script.

Indice 2

Pour la troisième question, souviens-toi de l'endroit où GET place les données.

Voir la correction pas à pas
  1. Le formulaire utilise POST : les données sont donc placées dans le corps de la requête.1 Le script lit la variable associée à GET au lieu de celle associée à POST, alors que la variable à lire dépend de la valeur de l'attribut method.2 Il ne trouve rien : voilà l'origine du problème.

  2. Première correction : garder le formulaire en POST et lire la clé mot avec $_POST à la place de $_GET dans le script.2

  3. Seconde correction : passer le formulaire en method="GET". La lecture par $_GET reste alors valable, sans passer par $_POST.2

  4. Après la première correction (POST), le mot n'apparaît pas dans la barre d'adresse, puisque les données sont dans le corps de la requête.1 Après la seconde (GET), le mot saisi s'affiche dans l'URL.1

Quand une donnée n'arrive pas, vérifie d'abord que la variable lue ($_GET ou $_POST) correspond à la méthode du formulaire. C'est la cause la plus courante.

Exercice 7 Le mot de passe dans l'adresse

★★★Environ 12 min

Un site propose le formulaire de connexion suivant :

<form method="GET" action="connexion.php">
  <input type="text" name="identifiant">
  <input type="password" name="mdp">
  <input type="submit" value="Se connecter">
</form>
  1. Où le mot de passe saisi se retrouve-t-il après l'envoi du formulaire ?
  2. Cite deux situations concrètes où cela pose problème.
  3. Réécris le formulaire pour corriger ce défaut et indique la modification à faire dans connexion.php pour lire le mot de passe.
  4. Cette correction suffit-elle à rendre les échanges parfaitement confidentiels ? Nuance ta réponse à partir de ce que tu sais.
Indice 1

Avec GET, tout ce qui est saisi apparaît à un endroit précis du navigateur.

Indice 2

Pour la question 4, relis ce que dit le cours : POST rend les données « moins visibles », pas invisibles.

Voir la correction pas à pas
  1. Avec GET, la saisie est écrite telle quelle dans l'URL du navigateur. Le mot de passe y apparaît donc, à côté de l'identifiant.1

  2. Deux situations : une personne regarde l'écran au moment de la connexion ; l'adresse complète est copiée et envoyée à quelqu'un, qui reçoit alors le mot de passe avec. Ces deux cas découlent de l'affichage dans l'adresse.1

  3. Correction : on passe en POST.

    <form method="POST" action="connexion.php">
      <input type="text" name="identifiant">
      <input type="password" name="mdp">
      <input type="submit" value="Se connecter">
    </form>
    

    Dans connexion.php, on lit $_POST['mdp'] au lieu de $_GET['mdp'].2

  4. Avec POST, les données sont dans le corps de la requête : elles sont moins visibles, mais pas pour autant inaccessibles à un esprit malveillant qui intercepterait la requête.1 Passer en POST évite l'affichage dans l'adresse ; cela ne règle pas à lui seul toute la question de la confidentialité.

POST protège contre l'affichage dans la barre d'adresse, pas contre tout. Pour un mot de passe, il est le choix minimal, jamais une garantie complète.

Exercice 8 Concevoir un formulaire complet

★★★Environ 20 min

Le club informatique du lycée veut un formulaire d'inscription : nom, prénom et classe de l'élève. Une page merci.php doit afficher « Merci » suivi du prénom et du nom.

  1. Choisis la méthode et justifie ton choix.
  2. Écris le code HTML du formulaire.
  3. Écris le script merci.php.
  4. Le club ajoute plus tard une page de recherche d'un adhérent par son nom. Quelle méthode proposes-tu pour ce second formulaire, et pourquoi ?
Indice 1

Les informations d'un élève sont personnelles : réfléchis à ce que tu veux voir dans l'adresse.

Indice 2

Pour la page de recherche, repense à l'exercice sur le site de recettes.

Indice 3

N'oublie pas l'attribut name de chaque champ : c'est lui qui servira dans le script.

Voir la correction pas à pas
  1. Choix de la méthode : on prend POST. Les informations d'un élève n'ont pas à s'afficher dans la barre d'adresse, et POST place les données dans le corps de la requête, donc moins visibles.1

  2. Le code HTML :

    <form method="POST" action="merci.php">
      <input type="text" name="nom">
      <input type="text" name="prenom">
      <input type="text" name="classe">
      <input type="submit" value="S'inscrire">
    </form>
    

    La balise form porte la méthode et le lien activé à l'envoi.1

  3. Le script merci.php lit les données avec la variable associée à la méthode POST :

    <?php
    echo "Merci " . $_POST['prenom'] . " " . $_POST['nom'];
    ?>
    

    Le fichier PHP cible lit les données avec la variable prévue pour la méthode utilisée dans le formulaire.2

  4. Pour la recherche par nom, on peut choisir GET : la saisie s'affiche alors dans l'URL, ce qui permet de recopier ou de partager l'adresse d'une recherche.1 Ce choix reste raisonnable parce que le nom cherché n'est pas une information secrète.

  5. On vérifie la cohérence : chaque name du formulaire correspond à une clé lue dans le script, et la variable lue correspond à la méthode choisie.

Concevoir un formulaire, c'est faire trois choix liés : la méthode, les noms des champs, la variable lue côté serveur. Chaque choix se justifie par l'usage : données personnelles en POST, recherche partageable en GET.

Les questions qu'on se pose

Comment savoir si je dois choisir GET ou POST à l'examen ?

Pose-toi une seule question : les données saisies peuvent-elles apparaître dans la barre d'adresse ? Avec GET, elles s'affichent directement dans l'URL ; avec POST, elles sont dans le corps de la requête et donc moins visibles.1 Pour une recherche que l'on veut pouvoir partager, GET convient. Pour un mot de passe ou des informations personnelles, on choisit POST. Dans ta copie, nomme toujours le critère : une réponse sans justification est incomplète.

Pourquoi mon script PHP ne reçoit-il pas les données du formulaire ?

Vérifie dans l'ordre : l'attribut action pointe-t-il vers le bon script ?2 La variable lue (GET∗∗ou∗∗_GET** ou **_POST) correspond-elle à la valeur de l'attribut method du formulaire ?2 Chaque champ a-t-il un attribut name et le script utilise-t-il exactement ce nom ? Dans la grande majorité des cas, l'erreur est une méthode POST côté formulaire et une lecture de $_GET côté script, ou une méthode GET côté formulaire et une lecture de $_POST côté script.

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