🐘

PHP — DĂ©veloppement Web Dynamique

Développez des applications web dynamiques avec PHP : formulaires, sessions et connexion à une base de données MySQL.

Niveau : Intermédiaire Durée : ~16h 8 chapitres Certificat inclus
Télécharger le cours PDF
Retour aux cours
1

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

LettreComposantRĂŽle
LLinuxSystĂšme d'exploitation du serveur
AApacheServeur web qui reçoit les requĂȘtes HTTP
MMySQLBase de données
PPHPLangage qui génÚre le HTML dynamiquement
PHP <?php echo "Bonjour depuis PHP !"; ?>
💡 Extension .php : un fichier doit se terminer en .php pour qu'Apache l'exĂ©cute comme du code serveur plutĂŽt que de l'envoyer tel quel.
2

Syntaxe de base et variables

PHP <?php $nom = "Fatou"; // chaßne de caractÚres $age = 22; // entier $moyenne = 15.5; // nombre décimal $actif = true; // booléen // Concaténation avec le point echo "Bonjour " . $nom; // Interpolation directe dans une chaßne double-guillemets echo "Bonjour $nom, tu as $age ans"; ?>
⚠ Toutes les variables PHP commencent par $, contrairement Ă  JavaScript. C'est une erreur frĂ©quente pour les dĂ©butants habituĂ©s Ă  d'autres langages.
3

Conditions et boucles

PHP <?php if ($note >= 10) { echo "Admis"; } elseif ($note >= 8) { echo "Rattrapage"; } else { echo "AjournĂ©"; } // Boucle for for ($i = 0; $i < 5; $i++) { echo $i; } // Boucle foreach — la plus utilisĂ©e avec les tableaux $cours = ["HTML5", "CSS3", "PHP"]; foreach ($cours as $c) { echo $c . "<br>"; } ?>
4

Fonctions et tableaux associatifs

PHP <?php function addition($a, $b) { return $a + $b; } echo addition(4, 5); // 9 // Tableau indexé $notes = [12, 15, 9]; // Tableau associatif (clé => valeur) $etudiant = [ "nom" => "Fatou", "filiere" => "Réseaux" ]; echo $etudiant["nom"]; ?>
5

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).

HTML <form action="traitement.php" method="POST"> <input type="text" name="nom"> <button type="submit">Envoyer</button> </form>
PHP — traitement.php <?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { $nom = htmlspecialchars($_POST['nom']); echo "Bonjour $nom"; } ?>
⚠ Toujours filtrer les entrĂ©es : htmlspecialchars() neutralise le HTML/JS injectĂ© dans un champ, ce qui protĂšge contre les attaques XSS.
6

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Ă©).

PHP <?php session_start(); // à appeler avant tout affichage, sur chaque page // Stocker une donnée de session (cÎté serveur) $_SESSION['utilisateur'] = 'fatou@example.com'; // La relire sur une autre page if (isset($_SESSION['utilisateur'])) { echo "Connecté en tant que " . $_SESSION['utilisateur']; } // Détruire la session (déconnexion) session_destroy(); ?>
â„č Session vs cookie : une session stocke les donnĂ©es cĂŽtĂ© serveur (sĂ©curisĂ©) et n'envoie qu'un identifiant au navigateur ; un cookie classique stocke la donnĂ©e directement chez le client.
7

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.

PHP <?php $conn = new mysqli("localhost", "admin", "motdepasse", "cours_info"); if ($conn->connect_error) { die("Erreur de connexion : " . $conn->connect_error); } $resultat = $conn->query("SELECT * FROM cours"); while ($ligne = $resultat->fetch_assoc()) { echo $ligne['titre']; } $conn->close(); ?>

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.

PHP — sĂ©curisĂ© $stmt = $conn->prepare("SELECT * FROM utilisateurs WHERE email = ?"); $stmt->bind_param("s", $email); $stmt->execute(); $resultat = $stmt->get_result();
⚠ Ne jamais faire : "SELECT * FROM users WHERE email='" . $_POST['email'] . "'" — un attaquant peut injecter du SQL arbitraire dans ce champ.
8

Projet final : formulaire de contact fonctionnel

🎯 Projet final : Construisez un formulaire de contact complet :
  • 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
💡 Étape suivante : approfondissez la base de donnĂ©es avec le cours MySQL pour bien structurer vos tables (types, clĂ©s, relations).

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.