Top des erreurs des développeurs PHP débutants — partie 4 : Gestion des données

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Top erreurs des développeurs PHP débutants — partie 4 : Travail avec les données



Nous poursuivons la série d'articles pour ceux qui étudient le PHP et souhaitent écrire un code de meilleure qualité. Dans cette partie, nous analyserons trois erreurs critiques liées au traitement des données utilisateur, à la mise en cache et au typage strict. Si vous êtes en phase d'apprentissage du PHP, ces exemples vous aideront à éviter les problèmes typiques dans des projets réels.



1. Confiance dans les données provenant des tableaux superglobaux



L'une des erreurs les plus courantes pour les développeurs PHP débutants est d'utiliser les données de $_GET, $_POST ou $_REQUEST sans vérification ni filtrage. C'est un chemin direct vers les attaques XSS et les injections SQL.



Approche erronée

<?php// Dangereux ! L'utilisateur peut envoyer un script$name = $_POST['username'];echo "Bonjour, $name !";?>


Approche correcte

<?php// Utilisation du filtrage et de l'échappement$name = htmlspecialchars(strip_tags(trim($_POST['username'] ?? '')), ENT_QUOTES, 'UTF-8');echo "Bonjour, " . $name . " !";?>


Que faire ? Traitez toujours les données entrantes. Pour travailler avec une base de données, utilisez des requêtes préparées (PDO ou MySQLi), et pour l'affichage — htmlspecialchars(). C'est la base de la sécurité en programmation PHP.



2. Absence de mise en cache des requêtes lourdes



De nombreux débutants exécutent la même requête SQL ou le même calcul complexe à chaque actualisation de la page. Cela tue les performances, surtout s'il y a beaucoup de requêtes.



Exemple du problème

<?php// On interroge la base de données à chaque fois$users = $db->query("SELECT * FROM users WHERE active = 1")->fetchAll();foreach ($users as $user) {    echo $user['name'];}?>


Solution avec mise en cache

<?php// Utilisation d'une mise en cache simple par fichier$cacheFile = 'cache/users_active.cache';$cacheTime = 300; // 5 minutes

if (file_exists($cacheFile) && (time() - filemtime($cacheFile)) < $cacheTime) { $users = unserialize(file_get_contents($cacheFile));} else { $users = $db->query("SELECT * FROM users WHERE active = 1")->fetchAll(); file_put_contents($cacheFile, serialize($users));}

foreach ($users as $user) { echo $user['name'];}?>


Pour des projets plus complexes, utilisez Memcached ou Redis. Cela accélérera l'apprentissage du PHP en termes de compréhension de l'architecture des applications à forte charge.



3. Ignorer le typage strict



PHP est un langage à typage dynamique, mais depuis la version 7.0, il est possible d'activer le mode strict. Les débutants oublient souvent cela, ce qui entraîne des erreurs inattendues.



Situation typique

<?phpfunction calculateSum($a, $b) {    return $a + $b;}

echo calculateSum(10, '5'); // Résultat : 15 (la chaîne a été convertie en nombre)?>


Correction

<?phpdeclare(strict_types=1); // Activation du mode strict

function calculateSum(int $a, int $b): int { return $a + $b;}

// echo calculateSum(10, '5'); // Fatal error: Uncaught TypeErrorecho calculateSum(10, 5); // 15?>


Le typage strict aide à détecter les erreurs en phase de développement, et non en production. Nous recommandons à tous les débutants en PHP de s'habituer immédiatement à spécifier les types des arguments et des valeurs de retour.



Bonus : travail avec les sessions sans vérification



Une autre erreur fréquente est d'écrire dans la session sans vérifier l'existence de la clé. Cela peut provoquer des avertissements.



<?phpsession_start();

// Erreur : si la clé n'existe pas, on obtient un avertissement$_SESSION['counter'] = $_SESSION['counter'] + 1;

// Correct$_SESSION['counter'] = ($_SESSION['counter'] ?? 0) + 1;?>

Blogs

Book Recommendations