Introduction Ă PHP et Ă la pile LAMP
PHP (PHP: Hypertext Preprocessor) est un langage de script cÎté serveur : le code s'exécute sur le serveur web, et seul le résultat (du HTML) est envoyé au navigateur. C'est le langage derriÚre WordPress, une grande partie de Facebook historiquement, et la majorité des sites dynamiques du web.
La pile LAMP
| Lettre | Composant | RĂŽle |
|---|---|---|
| L | Linux | SystĂšme d'exploitation du serveur |
| A | Apache | Serveur web qui reçoit les requĂȘtes HTTP |
| M | MySQL | Base de données |
| P | PHP | Langage qui génÚre le HTML dynamiquement |
.php pour qu'Apache l'exécute comme du code serveur plutÎt que de l'envoyer tel quel.Syntaxe de base et variables
$, contrairement à JavaScript. C'est une erreur fréquente pour les débutants habitués à d'autres langages.Conditions et boucles
Fonctions et tableaux associatifs
Traiter un formulaire avec $_GET et $_POST
Quand un formulaire HTML est soumis, PHP rĂ©cupĂšre les donnĂ©es envoyĂ©es via les tableaux superglobaux $_GET (dans l'URL) ou $_POST (dans le corps de la requĂȘte, invisible dans l'URL).
htmlspecialchars() neutralise le HTML/JS injecté dans un champ, ce qui protÚge contre les attaques XSS.Sessions et cookies
HTTP est un protocole « sans Ă©tat » : chaque requĂȘte est indĂ©pendante. Les sessions et cookies permettent de mĂ©moriser un utilisateur d'une page Ă l'autre (ex. rester connectĂ©).
Connexion Ă MySQL avec mysqli / PDO
PHP devient réellement puissant combiné à une base de données. La bibliothÚque mysqli (ou PDO) permet de dialoguer avec MySQL.
SĂ©curitĂ© : requĂȘtes prĂ©parĂ©es
ConcatĂ©ner directement une variable dans une requĂȘte SQL expose Ă l'injection SQL. Les requĂȘtes prĂ©parĂ©es sĂ©parent le code SQL des donnĂ©es saisies par l'utilisateur.
"SELECT * FROM users WHERE email='" . $_POST['email'] . "'" â un attaquant peut injecter du SQL arbitraire dans ce champ.Projet final : formulaire de contact fonctionnel
- Formulaire HTML (nom, email, sujet, message) envoyé en
POST - Script PHP qui valide les champs (non vides, email valide avec
filter_var($email, FILTER_VALIDATE_EMAIL)) - Insertion du message dans une table MySQL via une requĂȘte prĂ©parĂ©e
- Message de confirmation affiché à l'utilisateur
Exercices & Quiz de vérification
Testez vos connaissances avant de passer au cours suivant. Chaque question a une correction détaillée à dérouler.
1. Comment déclare-t-on une variable en PHP ?
- A. let nom = "Fatou";
- B. $nom = "Fatou";
- C. var nom : "Fatou";
Voir la correction
Réponse : B. Toutes les variables PHP commencent obligatoirement par le symbole $.
2. Quelle superglobale contient les données d'un formulaire envoyé en POST ?
- A. $_GET
- B. $_POST
- C. $_FORM
Voir la correction
Réponse : B. $_POST contient les champs envoyés avec method="POST" ; $_GET contient ceux passés dans l'URL.
3. Pourquoi utiliser des requĂȘtes prĂ©parĂ©es avec MySQL ?
- A. Elles sont plus courtes à écrire
- B. Elles empĂȘchent l'injection SQL
- C. Elles sont obligatoires en PHP
Voir la correction
RĂ©ponse : B. Elles sĂ©parent le code SQL des donnĂ©es utilisateur, empĂȘchant un attaquant d'injecter du SQL malveillant.
4. Que fait session_start() ?
- A. Elle démarre le serveur Apache
- B. Elle initialise ou reprend la session utilisateur en cours
- C. Elle crée une base de données
Voir la correction
RĂ©ponse : B. Elle doit ĂȘtre appelĂ©e en tout dĂ©but de script, sur chaque page utilisant $_SESSION.