Ces QCM portent sur un thème très concret et incontournable : la communication entre un formulaire HTML et un script PHP.
C’est une compétence fondamentale, car elle intervient dans la majorité des projets web, qu’il s’agisse d’une page de contact, d’une inscription, d’une connexion ou d’un système de recherche.
Pour réussir ce type d’exercices, il faut comprendre comment un formulaire envoie des données, comment ces données sont transportées par HTTP, et comment PHP les récupère via ses superglobales.
Vous travaillez également des points essentiels de sécurité et de qualité : contrôler la soumission, éviter les erreurs liées aux champs absents, et protéger l’affichage contre des contenus malveillants.
Ces notions sont très souvent évaluées en examens, car elles reflètent la capacité à coder un traitement fiable, propre et sécurisé.
Ces QCM portent sur un thème très concret et incontournable : la communication entre un formulaire HTML et un script PHP.
C’est une compétence fondamentale, car elle intervient dans la majorité des projets web, qu’il s’agisse d’une page de contact, d’une inscription, d’une connexion ou d’un système de recherche.
Pour réussir ce type d’exercices, il faut comprendre comment un formulaire envoie des données, comment ces données sont transportées par HTTP, et comment PHP les récupère via ses superglobales.
Vous travaillez également des points essentiels de sécurité et de qualité : contrôler la soumission, éviter les erreurs liées aux champs absents, et protéger l’affichage contre des contenus malveillants.
Ces notions sont très souvent évaluées en examens, car elles reflètent la capacité à coder un traitement fiable, propre et sécurisé.
QCM
1
Corrigé
Quel attribut de la balise HTML <form> définit le fichier PHP qui recevra les données ?
A. method
B. target
C. action
D. name
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
C
Justification :
L'attribut 'action' contient l'URL du script chargé de traiter les informations du formulaire.
QCM
2
Corrigé
Quelle méthode d'envoi affiche les données saisies directement dans l'URL du navigateur ?
A. POST
B. GET
C. SEND
D. REQUEST
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
La méthode GET transmet les paramètres via la chaîne de requête (query string) dans l'URL.
QCM
3
Corrigé
En PHP, quelle variable superglobale permet de récupérer les données envoyées par la méthode POST ?
A. $_POST
B. $POST
C. $_GET
D. $_HTTP_POST
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
La superglobale $_POST est un tableau associatif contenant les valeurs envoyées via cette méthode.
QCM
4
Corrigé
Pour créer un champ de mot de passe masqué à l'écran, quel type d'input utilise-t-on ?
A. type="text"
B. type="hidden"
C. type="secret"
D. type="password"
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
D
Justification :
Le type 'password' remplace les caractères saisis par des points ou des astérisques.
QCM
5
Corrigé
Quel attribut HTML est indispensable pour que PHP puisse identifier une donnée précise dans un formulaire ?
A. id
B. class
C. value
D. name
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
D
Justification :
L'attribut 'name' devient la clé dans les tableaux $_GET ou $_POST côté serveur.
QCM
6
Corrigé
Quelle méthode d'envoi est préférable pour transmettre des données sensibles comme un mot de passe ?
A. POST
B. GET
C. URL
D. QUERY
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
POST est plus sécurisé car les données ne sont pas visibles dans l'historique ou l'URL du navigateur.
QCM
7
Corrigé
Comment vérifie-t-on en PHP si un formulaire a bien été soumis ?
A. if ($form == true)
B. if (isset($_POST['nom_du_bouton']))
C. if (empty($submit))
D. if (check_form())
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
isset() permet de tester si une clé existe dans la superglobale d'envoi.
QCM
8
Corrigé
Quelle fonction PHP est essentielle pour protéger les données affichées contre les failles XSS ?
A. strip_tags()
B. md5()
C. htmlspecialchars()
D. mysqli_real_escape_string()
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
C
Justification :
Cette fonction convertit les caractères spéciaux en entités HTML, empêchant l'exécution de scripts malveillants.
QCM
9
Corrigé
Que contient la superglobale $_REQUEST ?
A. Uniquement les cookies
B. Les variables de session
C. La configuration du serveur
D. Le contenu de $_GET, $_POST et $_COOKIE
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
D
Justification :
$_REQUEST regroupe par défaut les données provenant de plusieurs sources de saisie.
QCM
10
Corrigé
Quelle balise HTML permet de créer une liste déroulante dans un formulaire ?
A. <select>
B. <list>
C. <input type="dropdown">
D. <option>
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
<select> définit la liste, tandis que <option> définit chaque élément de celle-ci.
QCM
11
Corrigé
Comment récupère-t-on la valeur d'une case à cocher (checkbox) si elle n'est pas cochée ?
A. Elle vaut 0
B. Elle vaut false
C. Elle n'est pas transmise au serveur
D. Elle vaut une chaîne vide
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
C
Justification :
Si une checkbox n'est pas cochée, PHP ne recevra aucune clé correspondante dans $_POST ou $_GET.
QCM
12
Corrigé
Quelle méthode HTTP est limitée par la taille maximale d'une URL ?
A. GET
B. POST
C. PUT
D. DELETE
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
GET est limité par les navigateurs et serveurs (souvent environ 2000 caractères), contrairement à POST.
QCM
13
Corrigé
Si j'ai <input name="age">, comment récupérer cette valeur en PHP après un envoi POST ?
A. $_POST['age']
B. $age
C. $_GET['age']
D. POST['age']
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
L'accès se fait via le tableau $_POST avec le nom du champ comme index.
QCM
14
Corrigé
Quel attribut permet d'envoyer des fichiers (upload) via un formulaire ?
A. method="FILE"
B. enctype="multipart/form-data"
C. action="upload.php"
D. type="file-sender"
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
Cet attribut d'encodage est obligatoire pour que le serveur traite l'envoi de fichiers binaires.
QCM
15
Corrigé
Quelle superglobale PHP gère les informations sur les fichiers téléchargés ?
A. $_POST
B. $_UPLOAD
C. $_FILES
D. $_DATA
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
C
Justification :
$_FILES contient le nom, le type, la taille et l'emplacement temporaire des fichiers.
QCM
16
Corrigé
Comment s'appelle l'action de nettoyer les données reçues avant traitement ?
A. L'encapsulation
B. Le formatage
C. Le débogage
D. La sanitisation
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
D
Justification :
La sanitisation consiste à filtrer les données pour éviter les injections et erreurs.
QCM
17
Corrigé
Dans une balise <input type="radio">, que permet l'utilisation du même 'name' pour plusieurs boutons ?
A. D'envoyer toutes les valeurs en même temps
B. De créer un choix unique parmi plusieurs options
C. De lier les boutons visuellement
D. De valider le formulaire automatiquement
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
Le groupe de boutons radio portant le même nom garantit qu'un seul choix est possible.
QCM
18
Corrigé
Quelle fonction PHP permet de supprimer les espaces en début et fin de chaîne saisie ?
A. strip()
B. clean()
C. trim()
D. cut()
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
C
Justification :
trim() est très utilisée pour nettoyer les saisies textuelles des erreurs de frappe (espaces superflus).
QCM
19
Corrigé
Quelle est la valeur par défaut de l'attribut 'method' d'un formulaire si on ne le précise pas ?
A. POST
B. GET
C. REQUEST
D. NONE
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
Si l'attribut method est omis, le navigateur utilise la méthode GET par défaut.
QCM
20
Corrigé
Comment peut-on récupérer plusieurs valeurs d'un champ <select multiple> ?
A. En ajoutant [] au nom du champ (ex: name="choix[]")
B. PHP le fait automatiquement avec le nom simple
C. En utilisant la superglobale $_MULTIPLE
D. Ce n'est pas possible en PHP
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
Les crochets indiquent à PHP de stocker les valeurs sélectionnées dans un tableau.
QCM
21
Corrigé
Quelle fonction permet de vérifier si une chaîne de caractères reçue est vide ?
A. is_null()
B. check()
C. empty()
D. void()
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
C
Justification :
empty() renvoie vrai si la variable n'existe pas ou si sa valeur est considérée comme vide (0, '', null).
QCM
22
Corrigé
Où sont stockées les données envoyées par POST ?
A. Dans les cookies du navigateur
B. Dans l'URL
C. Dans le cache du serveur
D. Dans le corps de la requête HTTP
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
D
Justification :
Les données POST sont encapsulées dans le corps de la requête, ce qui les rend invisibles dans l'URL.
QCM
23
Corrigé
Quel est l'avantage principal de la méthode GET ?
A. Sécurité accrue
B. Possibilité de mettre la page en favori avec les paramètres
C. Transfert de fichiers volumineux
D. Cache serveur désactivé
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
Comme les paramètres sont dans l'URL, l'utilisateur peut enregistrer le lien avec sa recherche.
QCM
24
Corrigé
Quel type d'input est utilisé pour un bouton qui efface tous les champs du formulaire ?
A. type="delete"
B. type="clear"
C. type="reset"
D. type="cancel"
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
C
Justification :
Le type 'reset' remet tous les contrôles du formulaire à leur valeur initiale.
QCM
25
Corrigé
Que renvoie la superglobale $_POST si on accède à une clé qui n'existe pas ?
A. Une erreur de type Notice ou Warning
B. La valeur 0
C. Une chaîne vide
D. La valeur false
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
Accéder à une clé inexistante dans un tableau génère un message d'erreur de niveau Notice.
QCM
26
Corrigé
Quel attribut HTML permet de rendre un champ de formulaire obligatoire ?
A. mandatory
B. required
C. validate
D. force
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
L'attribut 'required' bloque la soumission du formulaire tant que le champ n'est pas rempli.
QCM
27
Corrigé
Quelle fonction PHP est recommandée pour valider un format d'email ?
A. check_email()
B. verify_format()
C. validate_mail()
D. filter_var()
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
D
Justification :
filter_var($email, FILTER_VALIDATE_EMAIL) est la méthode standard et fiable.
QCM
28
Corrigé
Quel symbole sépare les variables dans une URL lors d'un envoi en GET ?
A. Le symbole &
B. Le symbole ?
C. Le symbole #
D. La virgule
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
Le '?' commence la liste des paramètres, et le '&' sépare chaque couple clé=valeur.
QCM
29
Corrigé
Pourquoi ne doit-on jamais faire confiance aux données d'un formulaire ?
A. Parce que l'utilisateur peut se tromper
B. Parce que les données peuvent être interceptées
C. Parce qu'elles peuvent être manipulées pour attaquer le serveur
D. Toutes les réponses ci-dessus
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
D
Justification :
La sécurité web repose sur le principe de ne jamais faire confiance aux entrées utilisateurs.
QCM
30
Corrigé
Quelle balise permet de regrouper logiquement plusieurs champs dans un formulaire ?
A. <group>
B. <fieldset>
C. <section>
D. <div>
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
<fieldset> regroupe les éléments et est souvent accompagné de la balise <legend>.
Mots & Définitions
Consultez les définitions des termes importants.
Un formulaire HTML est un ensemble de champs qui permet à un utilisateur d’envoyer des informations vers un serveur. Il sert à collecter des données comme un nom, un email ou un mot de passe. Son bon paramétrage conditionne la récupération correcte des données côté PHP.
L’attribut action indique l’adresse de la ressource qui recevra et traitera les données du formulaire. C’est généralement un fichier PHP ou une route serveur. Sans action explicite, l’envoi se fait souvent vers la page courante.
GET envoie les données dans l’URL sous forme de paramètres. Elle est pratique pour les recherches, filtres ou pages partageables, car l’URL peut être copiée ou mise en favori. En revanche, elle n’est pas adaptée aux données sensibles.
POST transmet les données dans le corps de la requête HTTP, ce qui évite de les afficher dans l’URL. Elle est privilégiée pour les données sensibles ou volumineuses, comme les mots de passe ou les formulaires complets. Elle est aussi indispensable pour certains envois complexes, comme l’upload de fichiers.
$_POST est un tableau PHP qui contient les données envoyées par la méthode POST. On y accède avec le nom du champ, par exemple $_POST['email']. Avant de lire une clé, il est recommandé de vérifier son existence pour éviter des avertissements.
$_GET contient les paramètres passés dans l’URL lors d’un envoi en GET. Elle permet de récupérer facilement une valeur transmise dans la query string. Comme toute donnée externe, son contenu doit être validé et nettoyé.
$_REQUEST regroupe plusieurs sources de données, notamment celles de $_GET, $_POST et $_COOKIE. Elle peut simplifier certains accès, mais elle rend l’origine des données moins claire. Pour un code plus fiable, il est souvent préférable d’utiliser $_GET ou $_POST explicitement.
L’attribut name est la clé qui permet au serveur d’identifier une donnée envoyée par un champ de formulaire. C’est ce nom qui devient l’index utilisé dans $_GET ou $_POST. Sans name, la valeur saisie n’est généralement pas exploitable côté PHP.
La soumission correspond à l’envoi des données du formulaire au serveur, généralement via un bouton de type submit. Côté PHP, on vérifie souvent la soumission en testant l’existence d’un champ attendu. Cette étape est importante pour éviter de traiter une page comme si un envoi avait eu lieu.
Un champ de type password masque les caractères saisis à l’écran. Il est utilisé pour éviter l’exposition visuelle d’un mot de passe lors de la saisie. Cela ne remplace pas la sécurité côté serveur, mais améliore la confidentialité côté interface.
Une case à cocher envoie généralement une valeur seulement si elle est cochée. Si elle ne l’est pas, le champ n’est souvent pas transmis au serveur, ce qui oblige à prévoir une vérification avec isset(). C’est un détail fréquent qui explique des résultats “manquants” côté PHP.
Les boutons radio servent à choisir une seule option parmi plusieurs. Leur comportement dépend du fait qu’ils partagent le même attribut name, ce qui les regroupe logiquement. Ainsi, une seule valeur est envoyée pour l’ensemble du groupe.
La balise select permet de créer une liste déroulante dans un formulaire. Les options disponibles sont définies avec des balises option. C’est un composant très utilisé pour proposer un choix contrôlé à l’utilisateur.
L’upload correspond à l’envoi d’un fichier depuis le navigateur vers le serveur. Il nécessite un paramétrage spécifique du formulaire, notamment un encodage adapté. Côté PHP, les informations du fichier sont reçues dans une superglobale dédiée.
La sanitisation consiste à nettoyer et sécuriser les données reçues avant de les utiliser. Elle vise à réduire les risques d’injection, de scripts malveillants ou d’erreurs de traitement. C’est une étape incontournable dès qu’on accepte des entrées utilisateur.
À propos de ce QCM
Au-delà des questions, l’objectif pédagogique est de savoir construire un “circuit complet” de saisie et de traitement.
Côté HTML, la réussite dépend de quelques attributs clés : action définit où les données sont envoyées, method précise comment elles voyagent (GET ou POST), et name donne l’identité de chaque information transmise.
Le choix entre GET et POST n’est pas anodin : GET rend les paramètres visibles dans l’URL, ce qui peut être utile pour partager une recherche, mais impose une limite de taille et n’est pas adapté aux données sensibles.
POST, au contraire, place les données dans le corps de la requête, ce qui améliore la discrétion et permet des envois plus riches, y compris l’upload de fichiers avec un encodage spécifique.
Côté PHP, la récupération se fait avec $_GET ou $_POST selon la méthode, et parfois avec $_REQUEST, qui mélange plusieurs sources mais réduit la clarté.
Un bon réflexe consiste à vérifier la soumission avant de traiter, notamment avec isset() sur un champ attendu, et à anticiper les champs optionnels : une checkbox non cochée, par exemple, n’envoie souvent rien.
La sécurité intervient à deux niveaux : d’abord en validant et nettoyant les données (sanitisation) pour éviter qu’elles ne contiennent des valeurs inattendues, puis en protégeant l’affichage avec une fonction comme htmlspecialchars() pour empêcher l’exécution de scripts injectés.
Enfin, pour des formats spécifiques comme l’email, des outils de validation comme filter_var() permettent d’éviter des saisies incorrectes et d’améliorer la fiabilité de l’application.
Conclusion
En conclusion, ces QCM vous entraînent sur une chaîne de compétences très recherchée : créer un formulaire clair, choisir la bonne méthode d’envoi, récupérer correctement les données côté PHP et appliquer les bons réflexes de sécurité.
En travaillant ces notions, vous gagnez en autonomie pour construire des pages fonctionnelles et robustes, et vous limitez les erreurs classiques liées aux champs manquants ou aux données non fiables.
L’idéal est de mettre immédiatement en pratique sur de petits exemples : un formulaire simple en GET, un formulaire d’inscription en POST, puis un cas d’upload avec $_FILES.
Cette pratique régulière consolide les automatismes et prépare efficacement aux exercices plus avancés de validation et de traitement côté serveur.