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

2. Créer un formulaire simple⚓︎
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
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
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
<!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
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.
V. QCM⚓︎
Formulaires et PHP
-
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
-
Dans un formulaire HTML, quelle balise permet de le délimiter ?
-
<input> -
<fieldset> -
<form> -
<label>
Remarque
.uUm/oc;g.Lfar(n,é)isp dbltàe050u040b0o0v0k0e0m0c0a0y0l0s0m0B0v0B0t0z0v0s0o0z0m0e0w0a0s0V0u0l0m0v0N0v0x0l0y0s0t0R050f0#0B04020y0z0g0I0K020h10050d0`0w0|0S0V0k0B0K0q0v0*0,0_0{0}0 0g0d120c1416181m0i0v0j0T0v0l0a0Z1A0:0=0@0t0v0n1l1a1n100X0u1D1t0g17190|0p0v1M0|0~100N0x0B0y1T1V1m1Y1!1O110s1*0w0@0z1,1v1N0r0v0t0e0Y0v1D0s1H0q1A0A0-000X0z0q0m1?0a0,0$0H0J0L0N0P0B0i170D. -
-
Quel attribut de la balise
<form>indique l'URL du script qui va traiter les données ?-
method -
name -
target -
action
Remarque
.RuUm/ocg.qLhfaxr(né)isp bdlte050w040k000n0B0B0p0u0y0b0B0x050g0f0z0C040n0g0B0u0f0r050e0S0U040x0w0p0s0g0u0v0C0x0A000c0a0k0x0z0b0,0p0f0h0p0n0d0d0?0q0w0n0p0x0C0o0C0d0w0A0?0b0r0x0m0u0g0l0u0C1c0R0T0V0i0w0l0w0%0)0V0t0x0j0b0u0x0=140x1q1b0h0s0}0?0K0n0u0B1t0@0C0v0}0#0r0s1!1K0f0b0d0;1*1a1c1j1n0f0p0d0b0A1V0p0C0i0%0E. -
-
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
.RuTUm/o?cEg.GLhfjvarn=,éisp dbAlte050A040E0r0H0i0B0F0s0B0e0x0G0o0g0C0H0B0m0j0c0w0P0H0z0B0C0g0u0u0x0*0B0z0.0G0B0s0q0g0b0G0;0+0C0y0t0N0G0H0e0H0u0_0C0s0u0+0F000d0a0n0?0}1f0R0p0g0t180B050i0X0H040h0i0F0x0v0r0s0F0H0b0t050f1v0Y040l0B0j0F1G0+0@1a0,0.0O0r0y0z0y0D1T0,1d1n0B0D0s0t140,000s0C140z0z0Z0C0b0B0u0s1!0k0s161I0l1K0J. -
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
.S_uT$m/oc.qLhfOvaxrnHéisPp dblte050z04050i0h0B0F040e0b0y0o0a0d050g0K0M040A0F0x0E0A0D0F0A0E0q0C0)0q0c0A0q0x0x0h0i0w0q0E0w0n0A0y0u0y0A0k0c0w0A0K0t0}0F1a0+0h0c0x0(0#181f0z0)1h0i0D0v0g0p0q0)0c0s0+0s0q0t0x0f0w1h0z0q1x0D0q0A0f0v0E0m0L0*0R0T0j0A0l1j1p0v1o0h0s0s0#0z0h0t0M1d0:0r0=0E0E0s0w0C0c0E1h0J1Q040t0q0f0F0V0X0N0A0M1o0m200z1h0B0;0n1#0f0c1J0w1%0j0V0H. -
-
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
.SRuTUm/ocE.qLhfOar(nî,Hé)isPp dlte050C040m0q0D0f0x0G0n0h0E0H0D0B0p0a0d0D0t0U0o0q0z0G0D0C0q0A0D0q0C0,0r0q0u0G0r0U0F0H0.0E0h0t0t0x0}0D0E0q0t0.0F000e0b0m0v0N0(0.0i0H0F0M0#0D0|0.0`0t0E0+0-0D0i0n0z0o0o0r130.0C0h0c0r0/0c0G170G0k0D0j0t0D0w0d0d0B0D0A0z0f0C0|0D0s0A170.1T1V0a0y1f0c1R0q0G1L0l0c1M0D0z0t0G0H0r1j0C1L1~1o0U0_0q0o0z0i0+0H1K1o0z0`260~1012140H1R0i1l2h0k050g0J. -
Quel type d'
<input>permet à l'utilisateur de saisir un nombre ?-
type="text" -
type="integer" -
type="range" -
type="number"
Remarque
.um/ocg.Lyhvaxrn=,éisp bdlte050u040h000l0z0z0n0s0w0a0z0v050e0d0x0A040z0i0u0A0p010o0a0b0w0A0n01050c0Q0S040v0e0n0r0A0v0a0o0;0j0l0b0u0v0S0v0t0l0s0t0s0^0x0r0x0s0r0v0l0a0m0v0o0d0%0n0A0t0g0v0E0G0I0K0M0O0.0T0V0X0Z0n0l0o0f0A0+0-0R0T0;0?0^0`0;0a0n0t0A1R0v0u0d1V0e0j0d160s0n0_0o0^0k0l0y1U1)0x1E0t1*0v0s0o0z0)1-0y1/0q0v0b151@1+1W0)0b0A0N0u0l1@0`0^141%0^0y0K1n0g0,0C. -
-
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
.RuTUm/ocEg.qGLhfvaxr(nè,é)isp dlte050C040n0r0D0e0y0G0o0g0E0H0D0m0i0c0D0H0B0G0D0r0C0C0t0g0*0A0y0U0l0b0r0v0E0D0g0v0D0B0g0b0o0r0A0G0:0b0U0F000d0a0n0D0h0`0G0A0H0v0v160!0D0C0r0t0r0e0w0G0t0!0x1c140A1m0H0t0e0H0$0T0D0F0M1n0t0G0r0j1B0_0b0D1G1I0N1E1t0U1h0D0p0r0q0g0t1z0u0h0r0B1S000b0{0e0g130b0t1S0U1u0h0o1B1~0U1K0Z0s0H0e0C0F0H0z0k050f0J. -
Comment sont délimitées les instructions PHP dans un fichier
.php?-
<php> ... </php> -
<script type="php"> ... </script> -
<?php ... ?> -
## ... ##
Remarque
.uTm/o?c;g.qLhvarnHéisPp bdltMe050w040l0D0u0x0t0q0u0B0p0a0g0B0t0e0M0x0v0r0v0x0u000s0g0p0t0n0D0q0B0x0,0O0D0x0A0I0x0y0o0A0t0u0^050g0e0z0D04020A0B0h0f0w0m0w050d1113040/0.1012140f020i181e1g140j0x0b0e0a0.0g0=0k0a0t0!0=0O1y0+0/0q0x130m0e0p0J130x1B0J0`0|0~0J0I0.0L0B0D0p0w0p0s0B0s1U0e0c0c0=0z0a0x0r0b0C0l1U0A0o0u0u0t1D0D0j1e0F. -
-
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
.uTm/ocg.qLvaxrn,HéôsPip dbltMe050w040u0q0u0x0D0t0B0x0a0o0x0A0l0o0g0l0g0D0K0m0r0f0a0B0r0x0f0s0(0x050M0n0e0U040t0D0n0k0D0a0n050d0:0=0g040h0x0j0Y0^0`0|0n0x0B0n0l0v0B0Y0A180f0n0v0w0N0H0J0D0N0n0D0o0k0e0v0Y0l0a0*0A1A0o0N0P0v0i0a0D0c1w0N0S0x0w0W0Y0q0b0C0j0x0g0r0o0r0n0r0D0p0x0t0T0t0x1L1j0Y0f0e0y0Y1r0x0o181z0N0k0v0t0v0z1k0x0y1/0R0Y0o0l220V1i0}0h0 0F.
VI. Crédits⚓︎
Auteur : Mireille Coilhac
Remarque
.Su_TUm$/oc]g.qhfOvaxr(n[èî,éù)isôPp bdltàe050I040e0w0J0N0s0K0M0P0s0b0J0s0F0F0i0j0E0s0N0E0p0J0P0F0N0J0b0U0W0Y0!0$0i0C0J0j0o0s0n0b0P0J0r0s0Z0b0u0=0@0%0j0j0?0F0E0}190-0_0w18050@0u0i0w0l040j0M0B0J0w0i0f0f0B0P050h1u1w1y0J0v0`18130s0z1r0J0L1S0s0u0s0j0N0y0u0?0D0J0I0M0b0N0G0^16000`0J0E0w0L0E1j1D0b1H0u0E160P0m0J0H1!0=0t0P0f1.0P0A0J050j0i1Y040g0c0H0q0a0d0x010I1*1E0f010k1K2k2m0_0/0M0E0F1s2D0P042v2x1F012C2l2M121F0f1S1B1-0i1d1h0j0B1Y1e0O0J0M0s191b0P2$0F0s2I0E180L0s0w0F2-1S142e2V0u1*0F0I1w2|0w0^0L0$0p0i0u0f0b2.0E1*0m1K0R.