Tutoriels gratuits et ouverts à toutes et à tous · mis à jour régulièrementÀ propos

Série « Animations » · partie 7 / 8

La requête web dynamique : navigateur, PHP et base de données

Du clic dans le navigateur à la page affichée, en passant par le serveur web, le script PHP (PDO) et la base de données, avec les deux réflexes de sécurité du développeur.

Développement✎ B. Jousseaume📅 21 octobre 2026⏱ 1 min 30📶 Débutant
0:00 / 0:00
Appuyez sur « Lire » pour lancer l’animation. Les sous-titres s’affichent ici.

    Questions pour vérifier la compréhension

    Le navigateur reçoit-il le code PHP ?

    Non. Le code est exécuté sur le serveur ; le navigateur ne reçoit que le HTML produit.

    Que fait le serveur web d’une requête vers un fichier .php ?

    Il le fait exécuter par l’interpréteur PHP et renvoie le résultat, au lieu d’envoyer le fichier tel quel.

    Dans prepare(), à quoi sert :cat ?

    C’est un emplacement nommé ; la valeur correspondante est fournie à part, dans execute().

    Pourquoi une requête préparée protège-t-elle la base ?

    Le modèle est analysé avant l’arrivée des valeurs : une valeur ne peut que remplir son emplacement, elle ne modifie jamais la structure de la requête.

    À quoi sert htmlspecialchars() ?

    À convertir les caractères spéciaux du HTML, pour qu’une donnée affichée ne soit jamais interprétée comme du code par le navigateur.

    Transcription de l’animation

    1. Statique ou dynamique

    Une page statique est un fichier envoyé tel quel : tout le monde reçoit exactement le même contenu. Une page dynamique est fabriquée à chaque demande par un programme côté serveur, ici en PHP, souvent à partir d’une base de données.

    2. Le parcours de la requête

    Alice ouvre la liste des produits de la catégorie 3. Le navigateur envoie une requête HTTP avec un paramètre dans l’URL : categorie=3. Le serveur web (Apache, Nginx) voit un fichier .php : il ne l’envoie pas tel quel, il le fait exécuter par PHP. Le script interroge la base de données (MySQL, MariaDB) pour récupérer les produits de la catégorie 3. La base renvoie les lignes trouvées. PHP les insère dans du HTML. Le navigateur ne reçoit que ce HTML : il ne voit jamais le code PHP, ni la base de données.

    3. Le script PHP

    Côté serveur, le script produits.php se connecte d’abord à la base avec PDO. Il prépare la requête : le texte SQL contient un emplacement, :cat, et pas la valeur elle-même. Il l’exécute en fournissant la valeur reçue dans l’URL. Requête et valeur voyagent séparément. Il récupère les résultats dans un tableau, prêt à être affiché.

    4. Dans la base de données

    La base exécute la requête. Elle examine la table produit… …et retient les lignes dont la catégorie vaut 3. Elle ne renvoie que les colonnes demandées, nom et prix : c’est le jeu de résultats, transmis à PHP.

    5. Construire la page

    PHP parcourt les résultats et écrit un élément de liste pour chaque produit. htmlspecialchars() neutralise les caractères spéciaux du HTML : une donnée reste une donnée, même une fois affichée. Le HTML produit part vers le navigateur, qui l’affiche. Une autre catégorie donnerait une autre page, avec le même script.

    6. Pourquoi une requête préparée

    Pourquoi une requête préparée ? Comparons deux façons d’écrire la même requête. En collant la saisie de l’utilisateur au texte de la requête, la base reçoit un seul bloc : elle ne distingue plus ce qui vient du développeur de ce qui vient de l’utilisateur. Avec une requête préparée, le modèle est envoyé et analysé d’abord. La valeur arrive ensuite, séparément. Elle ne peut que remplir l’emplacement prévu : quel que soit son contenu, elle reste une donnée et ne modifie jamais la structure de la requête.

    7. Vigilance sécurité

    Vigilance : toute donnée qui vient du client, URL, formulaire ou cookie, est à considérer comme non fiable. Pour la base : uniquement des requêtes préparées, jamais de concaténation de saisies. Pour la page : on échappe chaque donnée au moment de l’afficher. L’application se connecte avec un compte limité au strict nécessaire, jamais avec root. Et en production, les erreurs détaillées vont dans les journaux, pas à l’écran.

    8. À retenir

    En résumé : le navigateur demande, le serveur web délègue à PHP, PHP interroge la base et renvoie du HTML. Deux réflexes à chaque ligne de code : requête préparée pour la base, échappement pour l’affichage.

    © 2026 Bruno Jousseaume. Ce cours est publié sous licence CC BY-NC-SA 4.0 : vous pouvez le partager et l’adapter en citant l’auteur et un lien vers cette page, sans usage commercial, et en partageant vos adaptations sous la même licence.

    Pour aller plus loin