Aller au contenu

Les formulaires - Méthodes POST et GET

I. Introduction⚓︎

II. Les formulaires⚓︎

1. Qu’est-ce qu’un formulaire ?⚓︎

Un formulaire créé une interface homme-machine (IHM) permettant une interaction avec l'utilisateur

formulaire

2. Créer un formulaire simple⚓︎

prenom Nous allons créer le formulaire suivant :

Une fois exécuté par Alice, elle a obtenu l’affichage suivant :

Créer le fichier formulaire_Bonjour.html suivant
HTML
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8"/>
    <title> Hello </title>
 </head>
<body>
  <form action="bonjour.php" method="post">
    Entrez votre prénom : <br>
    <input type="text" name="prenom"> <br>
    <input type="submit" value="Envoyer">
  </form>
</body>
</html>
Pour créer l'intéraction

L'attribut action du fichier formulaire_Bonjour.html précédant, donne l'url du programme PHP destiné à traiter les données validées.

Créer le fichier bonjour.php suivant

HTML
<!DOCTYPE html>
<html>
<head>
    <title>Hello</title>
</head>
<body>
    <?php
        $prenom = $_POST["prenom"];
        echo "Bonjour ".$prenom;
    ?>
</body>
</html>
Utiliser le serveur UwAmp
  • Recopier ces deux fichiers dans votre répertoire (du style C:\UwAmp\www\Dupond)
  • Exécuter le fichier formulaire_Bonjour.html

Mon info

$_POST est un tableau associatif. Il contient tous les couples clé (les variables) / valeur transmis par la méthode post.

Modification du formulaire

Reprendre l’exemple précédent, en rajoutant la saisie de l’âge.

Vous enregistrerez les fichiers sous les noms formulaire_bonjour_age.html et bonjour_age.php

Syntaxe pour saisir un nombre : input type="number"

Votre programme devra afficher par exemple après exécution :

Bonjour Alice
Vous avez 17 ans

Solution
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
    <title> Hello </title>
</head>
<body>
<form action="bonjour_age.php" method="post">
    Entrez votre prénom : <br>
    <input type="text" name="prenom"> <br><br>
    Entrez votre âge : <br>
    <input type="number" name="age"> <br>
    <input type="submit" value="Envoyer">
</form>
</body>
</html>

et

HTML
<!DOCTYPE html>
<html>
<head>
    <title>Hello</title>
</head>
<body>
    <?php
        $prenom = $_POST["prenom"];
        $age = $_POST["age"];
        echo "Bonjour " . $prenom . "<br>";
        echo "Vous avez " . $age . " ans"."<br>";
    ?>
</body>
</html>

III. Méthode post et méthode get⚓︎

Mon info

Il existe deux méthodes pour récupérer les variables : la méthode post et la méthode get.

La méthode post crée le tableau associatif $_POST, et la méthode get crée le tableau associatif $_GET.

1. Méthode get⚓︎

Tester get

Reprendre les fichiers formulaire_bonjour_age.html et bonjour_age.php et les enregistrer respectivement sous formulaire_bonjour_age_get.html et bonjour_age_get.php

  • Dans formulaire_bonjour_age_get.html rectifier action=, et remplacer method= " post " par method= " get "
  • Dans bonjour_age_get.php remplacer $_POST par $_GET

Tester successivement formulaire_bonjour_age.html et formulaire_bonjour_age_get.html en observant l’adresse url de la barre de navigation.

Que constatez-vous ?

Solution

La méthode get fait circuler les informations du formulaire en clair dans la barre d'adresse.

Que fait google ?

Dans un navigateur, par exemple Firefox, utiliser la barre de recherche google avec un mot : par exemple koala

Quelle est la méthode utilisée par google ?

Solution

On observe dans la barre d'adresse : https://www.google.com/search?client=firefox-b-d&q=koala

google utilise donc la méthode get.

2. Comparaison des méthodes get et post⚓︎

Mon info

La méthode POST, transmet les informations du formulaire de manière masquée mais non cryptée. Le fait de ne pas afficher les données ne signifie en rien qu'elles sont cryptées. Rappelons nous d'ailleurs que ces informations utilisent le protocole HTTP et non HTTPS qui lui crypte les données.

Quelle est la meilleure méthode à adopter alors ? Cela dépend. Le choix de l'une ou de l'autre se fera en fonction du contexte. Si par exemple, nous souhaitons mettre en place un moteur de recherches alors nous pourrons nous contenter de la méthode GET qui transmettra les mots-clés dans l'url. Cela nous permettra aussi de fournir l'url de recherches à d'autres personnes. C'est typiquement le cas des URLs de Google .

La méthode POST est préférée lorsqu'il y'a un nombre important de données à transmettre ou bien lorsqu'il faut envoyer des données sensibles comme des mots de passe. Dans certains cas, seule la méthode POST est requise : un upload de fichier par exemple.

Source

V. QCM⚓︎

Formulaires et PHP

  1. Qu'est-ce qu'un tableau associatif en PHP ?

    • Un tableau dont les indices sont obligatoirement des entiers commençant à 0

    • Un tableau dont les clés sont des chaînes de caractères choisies par le développeur

    • Un tableau qui associe deux tableaux entre eux

    • Un tableau trié automatiquement par ordre alphabétique

    Remarque ..è/$_[lp)uS he(gOnéùm]Uvqi,ôtxbcàfTdPorsîa050h040w0r0l0C0P0E0g0n0P0j0l0P0N0N0L0F0z0P0C0z0H0l0n0N0C0l0j0U0W0Y0!0$0L0t0l0F0m0P0y0j0n0l0x0P0Z0j0M0=0@0%0F0F0?0N0z0}190-0_0r18050@0M0L0r0p040F0g0s0l0r0L0u0u0s0n050c1u1w1y0l0o0`18130P0O1r0l0J1S0P0M0P0F0C0b0M0?0i0l0h0g0j0C0B0^16000`0l0z0r0J0z1j1D0j1H0M0z160n0a0l0K1!0=0D0n0u1.0n0A0l050F0L1Y040d0e0K0q0k0I0f010h1*1E0u010v1K2k2m0_0/0g0z0N1s2D0n042v2x1F012C2l2M121F0u1S1B1-0L1d1h0F0s1Y1e0G0l0g0P191b0n2$0N0P2I0z180J0P0r0N2-1S142e2V0M1*0N0h1w2|0r0^0J0$0H0L0M0u0j2.0z1*0a1K0R.
  2. Dans un formulaire HTML, quelle balise permet de le délimiter ?

    • <input>

    • <fieldset>

    • <form>

    • <label>

    Remarque ../al)pu e(gnémLUi,tbcàfdors;050f040p0l0h0w0y0z0n0g0d0c0q0z0i0h0i0A0s0h0q0l0s0z0y0x0g0q0V0f0c0z0h0N0h0t0c0d0q0A0R050u0#0i04020d0s0B0I0K020k10050b0`0x0|0S0V0w0i0K0m0h0*0,0_0{0}0 0B0b120n1416181m0a0h0o0T0h0c0g0Z1A0:0=0@0A0h0j1l1a1n100X0f1D1t0B17190|0r0h1M0|0~100N0t0i0d1T1V1m1Y1!1O110q1*0x0@0s1,1v1N0e0h0A0y0Y0h1D0q1H0m1A0v0-000X0s0m0z1?0g0,0$0H0J0L0N0P0i0a170D.
  3. Quel attribut de la balise <form> indique l'URL du script qui va traiter les données ?

    • method

    • name

    • target

    • action

    Remarque ../l)pu he(gnéLmUqitxbcfdorsRa050e040n000C0s0s0z0r0u0f0s0g050v0y0x0i040C0v0s0r0y0l050b0S0U040g0e0z0m0v0r0A0i0g0c000p0B0n0g0x0f0,0z0y0k0z0C0o0o0?0j0e0C0z0g0i0t0i0o0e0c0?0f0l0g0w0r0v0h0r0i1c0R0T0V0a0e0h0e0%0)0V0d0g0q0f0r0g0=140g1q1b0k0m0}0?0K0C0r0s1t0@0i0A0}0#0l0m1!1K0y0f0o0;1*1a1c1j1n0y0z0o0f0c1V0z0i0a0%0E.
  4. Avec la méthode GET, où sont transmises les données du formulaire ?

    • Dans le corps de la requête HTTP, de façon invisible

    • Dans l'URL, en clair après un ?

    • Dans un cookie stocké côté client

    • Dans l'en-tête HTTP de façon chiffrée

    Remarque ../Elpu AhegnémL=UvG,itbc?fTdorsRja050e040h0r0j0x0g0d0H0g0n0m0v0i0C0B0j0g0s0c0A0t0P0j0E0g0B0C0l0l0m0*0g0E0.0v0g0H0G0C0f0v0;0+0B0u0D0N0v0j0n0j0l0_0B0H0l0+0d000q0F0o0?0}1f0R0z0C0D180g050x0X0j040y0x0d0m0p0r0H0d0j0f0D050b1v0Y040a0g0c0d1G0+0@1a0,0.0O0r0u0E0u0w1T0,1d1n0g0w0H0D140,000H0B140E0E0Z0B0f0g0l0H1!0k0H161I0a1K0J.
  5. En PHP, quel tableau associatif permet de récupérer les données envoyées par la méthode POST ?

    • $_GET

    • $_REQUEST

    • $_POST

    • $_FORM

    Remarque ../_$lpuS heOnémLvqitxbcfTdHPorsa050f04050w0C0z0k040d0c0B0l0h0y050b0K0M040i0k0E0t0i0e0k0i0t0F0v0)0F0g0i0F0E0E0C0w0s0F0t0s0x0i0B0A0B0i0r0g0s0i0K0m0}0k1a0+0C0g0E0(0#181f0f0)1h0w0e0n0b0q0F0)0g0D0+0D0F0m0E0o0s1h0f0F1x0e0F0i0o0n0t0j0L0*0R0T0a0i0p1j1p0n1o0C0D0D0#0f0C0m0M1d0:0u0=0t0t0D0s0v0g0t1h0J1Q040m0F0o0k0V0X0N0i0M1o0j200f1h0z0;0x1#0o0g1J0s1%0a0V0H.
  6. Quelle est la principale différence entre les méthodes POST et GET concernant la sécurité ?

    • POST chiffre toujours les données, GET ne le fait jamais

    • GET est plus rapide donc plus sécurisé que POST

    • POST masque les données dans l'URL, mais elles restent lisibles si le protocole est HTTP (non HTTPS)

    • POST est totalement sécurisé, GET ne l'est pas du tout

    Remarque ../El)puS heO(néLmUqi,tcfTdHPorsRîa050f040p0H0i0q0o0v0j0C0z0k0i0B0l0h0y0i0n0U0x0H0t0v0i0f0H0E0i0H0f0,0D0H0G0v0D0U0d0k0.0z0C0n0n0o0}0i0z0H0n0.0d000r0F0p0u0N0(0.0w0k0d0M0#0i0|0.0`0n0z0+0-0i0w0j0t0x0x0D130.0f0C0g0D0/0g0v170v0a0i0c0n0i0A0y0y0B0i0E0t0q0f0|0i0m0E170.1T1V0h0e1f0g1R0H0v1L0s0g1M0i0t0n0v0k0D1j0f1L1~1o0U0_0H0x0t0w0+0k1K1o0t0`260~1012140k1R0w1l2h0a050b0J.
  7. Quel type d'<input> permet à l'utilisateur de saisir un nombre ?

    • type="text"

    • type="integer"

    • type="range"

    • type="number"

    Remarque ../ylpu hegnéLm=vi,txbcdorsa050e040m000A0s0s0y0q0u0f0s0g050v0x0w0i040s0c0e0i0o010k0f0n0u0i0y01050b0Q0S040g0v0y0l0i0g0f0k0;0h0A0n0e0g0S0g0z0A0q0z0q0^0w0l0w0q0l0g0A0f0t0g0k0x0%0y0i0z0a0g0E0G0I0K0M0O0.0T0V0X0Z0y0A0k0j0i0+0-0R0T0;0?0^0`0;0f0y0z0i1R0g0e0x1V0v0h0x160q0y0_0k0^0p0A0d1U1)0w1E0z1*0g0q0k0s0)1-0d1/0r0g0n151@1+1W0)0n0i0N0e0A1@0`0^141%0^0d0K1n0a0,0C.
  8. Dans quel cas est-il préférable d'utiliser la méthode GET plutôt que POST ?

    • Lorsqu'on soumet un formulaire contenant un mot de passe

    • Lorsqu'on veut pouvoir partager ou mémoriser l'URL avec ses paramètres (ex : moteur de recherche)

    • Lorsque la quantité de données à envoyer est très importante

    • Lorsqu'on souhaite que les données ne soient jamais visibles

    Remarque ..è/El)pu he(gnéLmUGvqi,txcfTdorsRa050g040p0H0i0q0o0x0j0D0C0k0i0s0d0B0i0k0F0x0i0H0g0g0E0D0*0v0o0U0u0h0H0n0C0i0D0n0i0F0D0h0j0H0v0x0:0h0U0e000r0G0p0i0z0`0x0v0k0n0n160!0i0g0H0E0H0q0b0x0E0!0w1c140v1m0k0E0q0k0$0T0i0e0M1n0E0x0H0m1B0_0h0i1G1I0N1E1t0U1h0i0A0H0t0D0E1z0l0z0H0F1S000h0{0q0D130h0E1S0U1u0z0j1B1~0U1K0Z0y0k0q0g0e0k0f0a050c0J.
  9. Comment sont délimitées les instructions PHP dans un fichier .php ?

    • <php> ... </php>

    • <script type="php"> ... </script>

    • <?php ... ?>

    • ## ... ##

    Remarque ../alpu hegnéLmvMqitbc?TdHPors;050e040m0i0C0g0r0k0C0s0B0f0u0s0r0A0M0g0z0y0z0g0C000l0u0B0r0o0i0k0s0g0,0O0i0g0d0I0g0t0c0d0r0C0^050u0A0x0i04020d0s0D0v0e0h0e050b1113040/0.1012140v020j181e1g140a0g0w0A0f0.0u0=0q0f0r0!0=0O1y0+0/0k0g130h0A0B0J130g1B0J0`0|0~0J0I0.0L0s0i0B0e0B0l0s0l1U0A0n0n0=0x0f0g0y0w0p0m1U0d0c0C0C0r1D0i0a1e0F.
  10. Où s'exécute le code PHP ?

    • Dans le navigateur du client

    • Sur le serveur web

    • Directement dans le fichier HTML, côté client

    • Dans une base de données

    Remarque ../lpu egnéLmvMqi,ôtxbcTdHPorsa050d040z0y0z0f0g0C0s0f0e0i0f0c0D0i0h0D0h0g0K0t0j0v0e0s0j0f0v0r0(0f050M0B0A0U040C0g0B0m0g0e0B050b0:0=0h040a0f0k0Y0^0`0|0B0f0s0B0D0p0s0Y0c180v0B0p0d0N0H0J0g0N0B0g0i0m0A0p0Y0D0e0*0c1A0i0N0P0p0o0e0g0l1w0N0S0f0d0W0Y0y0w0n0k0f0h0j0i0j0B0j0g0q0f0C0T0C0f1L1j0Y0v0A0x0Y1r0f0i181z0N0m0p0C0p0u1k0f0x1/0R0Y0i0D220V1i0}0a0 0F.

VI. Crédits⚓︎

Auteur : Mireille Coilhac