Introduction : pourquoi certains abandonnent PHP et d'autres en vivent
\n\nVous avez décidé d'apprendre PHP. Excellent choix ! Ce langage fait tourner 78% des sites web dans le monde — des simples blogs aux géants comme Facebook (enfin, presque). Mais il y a un hic : de nombreux débutants tombent dans les mêmes pièges, transformant l'apprentissage en calvaire.
\n\nPourquoi ? PHP est un langage sournois. Il pardonne les erreurs stupides, mais pas l'ignorance des principes fondamentaux. Vous écrivez du code, ça marche, le site se charge — et vous pensez que tout va bien. Mais un mois plus tard, vous êtes noyé dans 500 lignes de code incompréhensible, et votre site se fait pirater en 5 minutes.
\n\nDans cet article, je décortique les 5 erreurs les plus fréquentes en PHP que commettent les débutants. Je vous montre du code réel, j'explique pourquoi c'est problématique, et je donne des solutions concrètes. Si vous vous reconnaissez dans un seul point — pas de panique, c'est normal. Corrigez-le, tout simplement.
\n\nErreur n°1 : Mélanger PHP et HTML sans structure
\n\nUn grand classique. Le débutant écrit quelque chose comme :
\n\n<?php\n$username = "Jean";\necho "<html><body><h1>Bonjour, " . $username . " !</h1>";\n?>\n<p>Ce texte est après le PHP</p>\n<?php\necho "</body></html>";\n?>\n\nÇa fonctionne, certes. Mais essayez d'ajouter une boucle, une condition, dix pages — et vous vous noyez dans un mélange de balises et de echo. Un tel code est impossible à lire, maintenir et déboguer.
\n\nPourquoi c'est mauvais ?
\n- \n
- Violation du principe de séparation des responsabilités (MVC). \n
- Au moindre changement de design, vous réécrivez la moitié de la logique. \n
- Les éditeurs de code deviennent fous avec les balises mélangées. \n
La bonne pratique ?
\nUtilisez un système de templates. Même sans framework, vous pouvez séparer la logique de l'affichage :
\n\n<?php\n// logic.php\n$data = ['name' => 'Jean', 'age' => 25];\ninclude 'template.php';\n?>\n\n<!-- template.php -->\n<!DOCTYPE html>\n<html>\n<body>\n <h1><?= htmlspecialchars($data['name']) ?></h1>\n <p>Âge : <?= $data['age'] ?> ans</p>\n</body>\n</html>\n\nRemarquez : j'utilise la balise courte <?= et la fonction htmlspecialchars() — c'est déjà une protection contre les failles XSS. Les erreurs en PHP sont souvent liées à l'ignorance de la sécurité.
Erreur n°2 : Ignorer les injections SQL (la plus dangereuse)
\n\nEn 2025, écrire ce genre de code est une faute grave :
\n\n$id = $_GET['id'];\n$query = "SELECT * FROM users WHERE id = $id";\n$result = mysqli_query($conn, $query);\n\nSi vous passez dans l'URL ?id=1 OR 1=1, vous récupérez tous les utilisateurs. Si vous passez ?id=1; DROP TABLE users — adieu la base. C'est une injection SQL, et c'est la première chose que les hackers testent.
Comment corriger ?
\nUtilisez les requêtes préparées (prepared statements). Voici comment faire en PHP moderne avec PDO :
\n\n$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');\n$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');\n$stmt->execute(['id' => $_GET['id']]);\n$user = $stmt->fetch();\n\nLa base de données échappe automatiquement la valeur. L'injection devient impossible. Retenez bien : ne jamais insérer directement des données utilisateur dans une requête SQL. C'est l'une des principales erreurs PHP débutant qui peut vous coûter votre site.
\n\nErreur n°3 : Utiliser des fonctions et styles obsolètes
\n\nInternet regorge de tutoriels de 2010 qui enseignent :
\n- \n
mysql_connect()— supprimé en PHP 7.0. \nereg()au lieu depreg_match(). \nsplit()au lieu deexplode(). \n- Fermer la balise
?>à la fin d'un fichier PHP pur. \n
Pourquoi c'est mauvais ? Parce que