10 questions. Une seule bonne réponse par question, et
l'explication s'affiche dès que vous avez répondu.
Le cours · La fiche
0 / 10
1Qu'est-ce qu'une session ajoute à HTTP ?
HTTP est sans mémoire : chaque requête arrive comme si c'était la première. La session lui en donne une, et le partage est asymétrique — le navigateur ne reçoit qu'un identifiant, les données restent sur le serveur. C'est précisément ce qui la rend plus sûre qu'un cookie.
2Le message « headers already sent » apparaît. Pourquoi ?
Les en-têtes HTTP partent avant le corps de la page. Dès qu'un seul caractère est sorti — un espace, une ligne vide avant <?php, un echo de débogage — il est trop tard pour poser un cookie de session ou une redirection.
3Après header("Location: login.php"), qu'est-ce qui est indispensable ?
header()ajoute un en-tête, il n'arrête rien : le reste du script continue de s'exécuter et de produire du HTML. Sans exit(), la page privée peut donc être entièrement envoyée à un visiteur non connecté — le navigateur redirige, mais le contenu est déjà parti.
4Sur quelle page ne faut-il SURTOUT PAS mettre le garde de session ?
Le garde renvoie vers login.php quand personne n'est connecté. Le placer surlogin.php fait que cette page se redirige vers elle-même, indéfiniment : le navigateur finit par afficher ERR_TOO_MANY_REDIRECTS. La page de connexion est la seule qui doit rester libre.
5Que fait l'opérateur ?? dans $_SESSION["visites"] ?? 0 ?
Lire une clé absente déclenche un avertissement Undefined array key. ?? — l'opérateur de coalescence — fournit une valeur de repli, et n'agit que sur l'absence ou null. À la différence de ?:, il laisse donc passer un 0 légitime.
6Sur quoi n'applique-t-on jamais trim() ?
Une espace peut faire partie du mot de passe choisi. La retirer en silence rend la connexion impossible à celui qui a tapé le bon mot de passe — et le rend incompréhensible, puisque rien ne le signale. Sur le nom et l'e-mail au contraire, l'espace de bord est toujours une faute de frappe.
7print_r($_SESSION) n'affiche rien du tout. Quelle est la cause la plus probable ?
Le partage est net : tableau vide = la session n'a pas été démarrée sur cette page — session_start() se remet à chaque fichier concerné. Tableau rempli mais valeur refusée = la clé n'est pas écrite pareil aux deux endroits. Deux symptômes, deux causes.
8Dans un espace membre à quatre fichiers, lequel ne porte pas de garde ?
login.php doit rester accessible sans être connecté : c'est la porte d'entrée. accueil.php est gardé, logout.php détruit la session puis redirige, et les fichiers communs (header, footer) sont inclus par les pages gardées.
9En dehors d'un exercice, comment vérifie-t-on un mot de passe ?
Un mot de passe ne se conserve jamais en clair, et pas davantage en md5(), cassé depuis longtemps. password_hash() produit une empreinte salée ; password_verify() la compare. On ne déchiffre rien : on recompare.
10Quelle méthode permet de partager un lien qui rouvre la même recherche ?
Avec GET, les critères sont dans l'adresse : le lien se copie, se met en favori, se partage. C'est justement pourquoi GET ne convient pas à ce qui est sensible — la même visibilité qui rend l'URL partageable la met dans l'historique et les journaux du serveur.