16 chapitres6 h 10 minIntermédiaire
PHP et MySQL
Cours PHP et MySQL gratuit pour le BTS SIO SLAM : PHP 8.5 sans framework, formulaires, sessions, PDO, CRUD, MVC, API JSON, sécurité, exercices corrigés.
Par Josselyn C., prof de BTS SIO. Mis à jour le .
L'essentiel
PHP est le langage qui s'exécute sur le serveur web pour fabriquer les pages d'un site ou les données d'une API ; MySQL est la base de données où il range et retrouve les informations. Ensemble, avec l'extension PDO qui les relie, ils font tourner une grande partie du web, de WordPress à GLPI. Au BTS SIO SLAM, c'est la pile de nombreuses réalisations professionnelles présentées à l'E6, celle que tu fais évoluer pendant l'heure de réalisation, et le langage des extraits de code à corriger à l'écrit E7. Ce cours enseigne PHP 8.5 natif, sans framework : tu écris toi-même chaque couche, et tu comprends ce que fait chaque ligne.
À la fin de ce cours, tu sauras :
- installer un environnement PHP et MySQL, et lire un message d'erreur ;
- écrire du PHP moderne et typé : tableaux, fonctions, classes, énumérations ;
- traiter un formulaire de bout en bout : validation côté serveur, réaffichage des erreurs, redirection ;
- accéder à MySQL avec PDO et des requêtes préparées, gérer les erreurs et les transactions ;
- construire une authentification sûre et un CRUD complet, puis l'organiser en MVC sans framework ;
- recevoir des fichiers, exposer une API JSON et préparer la mise en production ;
- trouver et corriger les failles classiques (injection SQL, XSS, CSRF, contrôle d'accès) comme à l'E7.
Avant ce cours. Il te faut les bases de la programmation (variables, conditions, boucles : cours Algorithmique), savoir écrire une page et un formulaire en HTML (HTML et CSS) et connaître les requêtes SQL de base, SELECT, INSERT et les jointures (SQL). Pour le chapitre 11, les notions de classe, d'objet et d'héritage sont supposées connues : elles sont expliquées dans le cours Programmation orientée objet, avec C#.
Les versions du cours. Le code est écrit pour PHP 8.5, la version stable la plus récente en novembre 2026 ; il fonctionne aussi en PHP 8.4, sauf les lignes signalées « PHP 8.5 ». La base est MySQL 8.4 ; tout fonctionne aussi avec MariaDB.
Le fil rouge. Tous les exemples construisent Prêtmat, l'application de prêt de matériel du service informatique de Sorbier Logistique : des employés empruntent des ordinateurs portables, des vidéoprojecteurs et des caméras, un gestionnaire tient l'inventaire. Trois tables, deux rôles, un CRUD, des règles de gestion et une API : la taille d'une réalisation présentable à l'E6. Le script de la base est au chapitre 7.
Comment travailler. Installe ton environnement (chapitre 1), crée la base, puis tape et exécute le code au fil des chapitres plutôt que de le copier d'un bloc. Chaque chapitre se termine par des exercices dont la réponse est masquée : cherche d'abord, ouvre ensuite.
| Ton objectif | Chapitres à travailler en priorité |
|---|---|
| Découvrir PHP | 1 à 5 |
| Relier une application à MySQL | 7, 8 et 10 |
| Construire ta réalisation pour l'E6 | 4 à 12, puis 13 à 15 selon ton projet |
| Préparer l'écrit E7 SLAM | 5, 7, 9, 13, 15 et 16 |
| Ajouter une API à ton application | 7, 8, 12 et 14 |
Après ce cours, le cours API REST approfondit la conception des API, Architecture MVC la théorie des couches, Sécurité des applications l'ensemble des risques de l'OWASP, et Tests la manière de vérifier ton code automatiquement. Le cours Node.js présente l'autre pile serveur du BTS, en JavaScript.
Sommaire
PHP et MySQL
0 chapitre sur 16
- Chapitre 1 : C'est quoi PHP ? Installer PHP 8.5 et MySQL17 min
- Chapitre 2 : Les bases de PHP : variables, types, conditions et boucles22 min
- Chapitre 3 : Tableaux et fonctions en PHP19 min
- Chapitre 4 : Formulaire PHP : $_GET, $_POST et validation23 min
- Chapitre 5 : Faille XSS en PHP : htmlspecialchars et échappement15 min
- Chapitre 6 : Sessions et cookies en PHP20 min
- Chapitre 7 : PDO : connexion à MySQL et requêtes préparées27 min
- Chapitre 8 : PDO : fetch, erreurs et transactions23 min
- Chapitre 9 : Inscription et connexion en PHP : password_hash et jeton CSRF29 min
- Chapitre 10 : CRUD complet en PHP avec PDO et MySQL38 min
- Chapitre 11 : Classes et objets en PHP : syntaxe, enum, readonly33 min
- Chapitre 12 : MVC en PHP sans framework : front controller et routeur27 min
- Chapitre 13 : Upload de fichier en PHP sécurisé16 min
- Chapitre 14 : Créer une API REST en PHP : renvoyer du JSON21 min
- Chapitre 15 : Configuration, secrets et sécurité en production17 min
- Chapitre 16 : Exercices PHP corrigés type E6 et E722 min
Questions fréquentes
C'est quoi PHP et à quoi ça sert ?
PHP est un langage de programmation qui s'exécute sur le serveur web : il produit les pages HTML (ou les données JSON) que le serveur renvoie au navigateur, souvent à partir d'informations lues dans une base de données. Le visiteur ne voit jamais le code PHP, seulement ce qu'il produit (comment PHP fonctionne). Il sert à construire des sites dynamiques, des applications de gestion et des API ; WordPress, GLPI ou Moodle sont écrits en PHP.
Quelle est la différence entre PHP et MySQL ?
PHP est un langage de programmation, exécuté par le serveur web ; MySQL est un SGBD, le logiciel qui stocke les données et exécute les requêtes SQL. Un script PHP se connecte à MySQL (avec PDO), lui envoie des requêtes, puis met en forme les résultats. Les deux sont indépendants : PHP peut utiliser PostgreSQL ou SQLite, et MySQL peut servir une application Node.js ou C#.
C'est quoi PDO en PHP ?
PDO (PHP Data Objects) est l'extension de PHP qui permet de se connecter à une base de données et d'exécuter des requêtes, avec la même interface pour MySQL, MariaDB, PostgreSQL ou SQLite. Elle fournit les requêtes préparées, qui protègent contre l'injection SQL, et signale les erreurs par des exceptions. L'extension mysqli est l'autre choix valable pour MySQL ; l'ancienne extension mysql_* a été supprimée en PHP 7.0 (PDO, mysqli et mysql).
Comment se connecter à une base MySQL en PHP ?
On crée un objet PDO avec un DSN (mysql:host=127.0.0.1;dbname=pretmat;charset=utf8mb4), le nom d'un compte et son mot de passe, et des options : erreurs en exceptions, lignes en tableaux associatifs, émulation des requêtes préparées désactivée. Les paramètres se lisent dans la configuration avec getenv(), jamais en dur dans le code, et le compte n'est pas root (se connecter avec PDO).
Comment se protéger des injections SQL en PHP ?
En utilisant des requêtes préparées partout : prepare() avec des marqueurs (:email ou ?), puis execute() avec les valeurs. Le serveur analyse la requête avant de recevoir les valeurs, qui ne peuvent donc jamais devenir du code SQL (l'injection SQL). Appeler prepare() sur une chaîne déjà construite avec des variables ne protège rien, et les noms de colonnes choisis par l'utilisateur passent par une liste blanche.
Comment hacher un mot de passe en PHP ?
Avec password_hash($motDePasse, PASSWORD_DEFAULT) à l'enregistrement, et password_verify($saisie, $empreinte) à la connexion. La fonction utilise bcrypt (coût 12 depuis PHP 8.4), ajoute un sel aléatoire et produit une empreinte de 60 caractères, à stocker dans une colonne VARCHAR(255). md5() et sha1() sont trop rapides pour des mots de passe (hacher un mot de passe).
Quelle est la différence entre $_GET et $_POST ?
$_GET contient les paramètres de l'URL (après le ?), $_POST les champs d'un formulaire envoyé en méthode POST, dans le corps de la requête. On utilise GET pour lire (recherche, filtre, page de détail) et POST pour tout ce qui modifie des données ou transmet un mot de passe. Dans les deux cas, les valeurs sont fournies par le client et doivent être validées côté serveur (GET ou POST).
Comment fonctionne une session en PHP ?
session_start() crée un identifiant aléatoire, envoyé au navigateur dans un cookie, et un espace de stockage côté serveur, accessible par le tableau $_SESSION. À chaque requête suivante, le navigateur renvoie le cookie et PHP recharge les données. Le client ne détient que l'identifiant : pour qu'il ne soit ni volé ni imposé, on règle le cookie (HttpOnly, Secure, SameSite) et l'on appelle session_regenerate_id(true) à la connexion (sessions et cookies).
Quelle version de PHP utiliser en 2026 ?
PHP 8.5, sortie en novembre 2025, est la version stable la plus récente en novembre 2026 ; PHP 8.4 reste un bon choix. Les deux reçoivent des correctifs de sécurité jusqu'à fin 2029 et fin 2028. PHP 8.2 ne reçoit plus que des correctifs de sécurité, jusqu'à fin 2026, et les versions antérieures ne sont plus corrigées du tout : aucune ne convient pour un nouveau projet (les versions de PHP).
Peut-on faire une application complète en PHP sans framework ?
Oui. Un contrôleur frontal, un petit routeur, des contrôleurs, des classes d'accès aux données avec PDO et des vues suffisent pour une application de gestion bien organisée, comme le montre le chapitre 12. Écrire ces couches toi-même t'apprend ce qu'elles font, ce qui t'aide à lire n'importe quel code PHP à l'écrit et à faire évoluer ton application pendant l'heure de réalisation de l'E6. Composer reste utile, ne serait-ce que pour le chargement automatique des classes.