Faites-vous ces 10 erreurs PHP?

Une des meilleures choses à propos de PHP est que c'est un très bon langage dans lequel "plonger", grâce à sa grande popularité. Toute personne ayant la possibilité de cliquer sur "Rechercher" sur Google peut créer rapidement un programme. Cependant, cela prête également à une critique majeure de PHP: il est presque trop facile de trouver et de reproduire un code incorrect.

Voici 10 erreurs PHP que tout programmeur, quel que soit son niveau de compétence, pourrait commettre à tout moment. Certaines des erreurs sont très basiques, mais vous pouvez même tromper le meilleur programmeur PHP. Il est difficile de détecter d’autres erreurs (même avec un rapport d’erreurs strict). Mais toutes ces erreurs ont un point commun: Ils sont faciles à éviter.

Prenez le temps et assurez-vous que votre PHP est sécurisé, propre et fonctionne bien en vérifiant votre site pour les erreurs courantes de PHP.

1. guillemets simples, guillemets doubles

Il est facile de ne faire que des guillemets doubles lors de la concaténation de chaînes, car tout est analysé parfaitement, sans avoir à traiter avec des caractères d'échappement ni à utiliser des valeurs de points. Cependant, l’utilisation de guillemets simples génère des gains de performances considérables, car elle nécessite moins de traitement..

Considérons cette chaîne:

 # $ howdy = 'tout le monde'; # $ foo = 'hello $ howdy'; # $ bar = "hello $ howdy"; 

$ foo affiche "hello $ howdy" et $ bar nous donne "hello tout le monde". C'est une étape de moins que PHP doit traiter. C'est un petit changement qui peut faire des gains significatifs dans les performances du code.


Photo de dantaylor.

2. Point-virgule après un moment

C'est drôle de voir comment un petit personnage peut causer des dégâts dans un programme, sans même être signalé aux journaux d'erreur PHP! Comme avec les points-virgules et les déclarations While.

Codeutopia a un excellent exemple de cette petite erreur, montrant que ces vilaines erreurs ne sont même pas signalées (même à E_ALL!), Car elle tombe silencieusement dans une boucle silencieuse.

 $ i = 0; tandis que ($ i 

Omettre le; après la déclaration while, et votre code est en clair.


Photo de RTPeat.

3. PAS d'utiliser la mise en cache de la base de données

Si vous utilisez une base de données dans votre application PHP, il est vivement conseillé d'utiliser au moins une sorte de mise en cache de la base de données. Memcached est devenu le système de mise en cache le plus peuplé, avec des sites gigantesques comme Facebook, qui approuvent le logiciel..

Memcached est gratuit et peut apporter des gains très importants à votre logiciel. Si votre PHP entre en production, il est vivement conseillé d'utiliser le système de mise en cache.


Photo par age_accozzaglia.

4. Point-virgule manquant après une pause ou une poursuite

Comme le n ° 2, un point-virgule mal utilisé peut créer de graves problèmes tout en glissant silencieusement dans l'ombre, ce qui rend assez difficile la recherche de l'erreur..

Si vous utilisez un point-virgule après une "pause" ou une "suite" dans votre code, le code sera convaincu de générer un "0" et de quitter. Cela pourrait causer de graves égratignures à la tête. Vous pouvez éviter cela en utilisant des accolades avec des structures de contrôle PHP (via CodeUtopia).


Photo de ed_gaillard.

5. Ne pas utiliser les rapports E_ALL

Signaler une erreur est un très fonctionnalité pratique en PHP, et si vous ne l'utilisez pas déjà, vous devriez vraiment l'activer. Le signalement des erreurs élimine une grande partie des incertitudes du code de débogage et accélère votre temps de développement..

Bien que de nombreux programmeurs PHP utilisent peut-être des rapports d'erreurs, beaucoup n'utilisent pas toute l'étendue de ces rapports. E_ALL est un type de rapport d'erreur très strict, et son utilisation garantit que même la plus petite erreur est signalée. (C'est une bonne chose si vous voulez écrire du bon code.)

Lorsque vous avez terminé de développer votre programme, veillez à désactiver vos rapports, car vos utilisateurs ne voudront probablement pas voir un tas de messages d'erreur sur des pages qui, sinon, semblent correctes. (Même avec le rapport d’erreur E_ALL, ils ne verront de toute façon aucune erreur, mais des erreurs faire se produire.)


Photo par Eliya.

6. Ne pas fixer de limite de temps sur les scripts PHP

Lorsque les scripts PHP sont exécutés, il est supposé qu'ils finiront dans les meilleurs délais. Mais tout bon programmeur sait que rien devrait être supposé dans un morceau de code. Rien ne rend un programme plus grincheux qu'un script qui ne répond pas.

Vous pouvez contourner ce problème en définissant simplement une limite de temps pour le script (set_time_limit). Bien que cela puisse paraître banal, il est toujours intelligent de se préparer au pire.

7. Ne pas protéger les identifiants de session

Une erreur de sécurité PHP très courante est de ne pas protéger les identifiants de session avec au moins une sorte de cryptage. Ne pas protéger ces identifiants de session est presque aussi grave que de donner les mots de passe d'un utilisateur. Un pirate informatique pourrait s’infiltrer et voler un identifiant de session, lui donnant éventuellement des informations sensibles. MT Soft un exemple de protection des identifiants de session avec sha1:

 if ($ _SESSION ['sha1password'] == sha1 ($ userpass)) // fait des choses sensibles ici 

L'ajout de shai1 au ($ userpass) donne un bit de sécurité supplémentaire à la session. Sha1 n'est pas une méthode à toute épreuve, mais c'est une barrière de sécurité intéressante pour éloigner les utilisateurs malveillants.

8. Non validation des données de cookie

Combien de confiance mettez-vous dans les cookies? La plupart des gens ne pensent pas à deux fois au peu de données apparemment inoffensives transmises par un cookie. Le nom "cookie" lui-même est associé au lait, à la sieste et au père Noël, pour crier fort! Comment un cookie pourrait-il être inoffensif??

Si vous ne validez pas les données de cookie, vous ouvrez votre code avec des données potentiellement dangereuses. Vous devez utiliser htmlspecialchars () ou mysql_real_escape_string () pour valider le cookie avant de le stocker dans une base de données..

9. Entités qui ne s'échappent pas

Souvent, les programmeurs PHP font trop confiance aux données, en particulier aux données générées par l'utilisateur. Il est impératif de nettoyer les données avant de les placer dans un stockage quelconque, comme une base de données..

Source Rally nous montre comment échapper correctement à des entités telles que des formes. Au lieu d'utiliser ceci:

 echo $ _GET ['nom d'utilisateur']; 

Vous pouvez valider les données en utilisant htmlspecialchars () (ou htmlentities ()) comme ceci:

 echo htmlspecialchars ($ _GET ['nomutilisateur'], ENT_QUOTES); 

10. Utilisation d’opérateurs de comparaison incorrects

Bien que les opérateurs de comparaison constituent une partie extrêmement élémentaire de la programmation PHP, les mélanger dans votre code ne manquera pas de faire bouger votre programme. Comme le dit le proverbe allemand, le diable est dans les détails.

Se familiariser avec les opérateurs souvent mal utilisés tels que =, ==,! =, Est absolument essentiel à la programmation PHP. Prendre le temps de bien comprendre les différences accélérera grandement votre programmation et générera moins de bugs à déboguer.



Photo de Foxtongue.