𝟭𝟬 𝗕𝘂𝗴𝘀 𝗣𝗛𝗣 𝗤𝘂𝗶 𝗗𝗲𝘀𝘁𝗿𝘂𝗶𝘀𝗲𝗻𝘁 𝗗𝗲𝘀 𝗣𝗿𝗼𝗷𝗲𝘁𝘀 𝗥𝗲́𝗲𝗹𝘀
Le code fonctionne sur votre ordinateur. Vous le poussez sur le serveur. Tout plante. Il n'y a aucune erreur dans les logs. Vous voyez simplement un résultat incorrect.
Ces bugs ne proviennent pas des manuels scolaires. Ils proviennent de vrais systèmes de connexion, de boutiques et d'API. Ils semblent corrects lors des revues de code, mais échouent en production.
Voici les bugs n°11 à n°20 et comment les corriger.
• Boucles infinies Oublier d'incrémenter un compteur bloque le processus PHP. Cela peut faire planter l'intégralité de votre serveur. Solution : Assurez-vous toujours que vos compteurs de boucle augmentent.
• Problèmes de sensibilité à la casse
PHP considère « Admin » et « admin » comme des chaînes différentes. Cela casse le contrôle d'accès.
Solution : Utilisez strtolower() avant de comparer les chaînes.
• Mathématiques et troncature
L'utilisation de (int) sur un nombre décimal ne l'arrondit pas. Cela le tronque. Cela provoque des erreurs financières dans la facturation.
Solution : Utilisez round() ou number_format().
• Erreurs JSON
json_decode renvoie un objet par défaut. Si vous essayez de l'utiliser comme un tableau, le script échoue.
Solution : Passez true comme second argument pour obtenir un tableau.
• Risques de sécurité XSS
L'affichage direct des entrées utilisateur permet aux attaquants d'injecter des scripts.
Solution : Utilisez toujours htmlspecialchars().
• Échecs de chemin
Les chemins relatifs fonctionnent sur les machines locales mais échouent sur les serveurs de production.
Solution : Utilisez la constante __DIR__ pour les chemins absolus.
• Données en double
Les utilisateurs cliquent souvent deux fois sur les boutons de validation. Cela crée des entrées en double dans la base de données.
Solution : Vérifiez d'abord si l'enregistrement existe et utilisez une contrainte UNIQUE dans votre base de données.
• Fusion de tableaux
array_merge() réinitialise les clés numériques à zéro. Cela détruit votre structure de données.
Solution : Utilisez l'opérateur + ou array_replace() pour conserver vos clés.
• Erreurs invisibles
Désactiver les erreurs en production est une bonne pratique pour la sécurité. C'est mauvais pour le débogage si vous ne les enregistrez pas.
Solution : Réglez log_errors sur 1 et définissez un chemin error_log.
• Références de boucle
Une boucle foreach modifie une copie des données, pas le tableau d'origine.
Solution : Utilisez le symbole & pour créer une référence, mais faites toujours un unset de la variable après la boucle.
La plupart de ces bugs ne génèrent pas d'erreurs. PHP continue de s'exécuter, mais produit des résultats incorrects. Cela les rend dangereux.
Écrire du code est facile. Écrire du code prêt pour la production nécessite de comprendre comment les choses peuvent échouer.
Lisez le guide complet ici : https://dev.to/bikkisingh/10-php-bugs-that-break-real-projects-and-how-to-fix-them-part-2-7hm