Validation, isset(), is_null(), =="" et autres pièges

1 message   •   Page 1 sur 1
Avatar de l’utilisateur
Mammouth du PHP | 19626 Messages

25 Oct 2010, 22:37

Lorsqu'on valide un formulaire, on peut avoir à vérifier que certains champs ont bien été remplis. On utilisera diverses fonctions pour valider le contenu qui a été posté, mais certaines valeurs peuvent donner lieu à des surprises inattendues. L'utilisation d'un certain nombre de fonctions avec certaines valeurs est alors à prendre en compte.

Afin d'avoir un point de repère, voici un petit tableau synthétique à connaitre (par cœur ce serait mieux ;) )
[php]Les retours de vérification de variables avec certaines fonctionnalités natives :
+--------------------+-------+-------+-------+-------+-------+-------+-------+
| Valeur de $var => | NULL | "" | 0 | "0" | 1 | TRUE | FALSE |
+--------------------+-------+-------+-------+-------+-------+-------+-------+
| strlen($var) | 0 | 0 | 1 | 1 | 1 | 1 | 0 |
+--------------------+-------+-------+-------+-------+-------+-------+-------+
| $var | FALSE | FALSE | FALSE | FALSE | TRUE | TRUE | FALSE |
| !is_null($var) | FALSE | TRUE | TRUE | TRUE | TRUE | TRUE | TRUE |
| !empty($var) | FALSE | FALSE | FALSE | FALSE | TRUE | TRUE | FALSE |
| isset($var) | FALSE | TRUE | TRUE | TRUE | TRUE | TRUE | TRUE |
| $var != "" | FALSE | FALSE | FALSE | TRUE | TRUE | TRUE | FALSE |
| $var !== "" | TRUE | FALSE | TRUE | TRUE | TRUE | TRUE | TRUE |
| true == $var | FALSE | FALSE | FALSE | FALSE | TRUE | TRUE | FALSE |
| true === $var | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE |
+--------------------+-------+-------+-------+-------+-------+-------+-------+
| !$var | TRUE | TRUE | TRUE | TRUE | FALSE | FALSE | TRUE |
| is_null($var) | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| empty($var) | TRUE | TRUE | TRUE | TRUE | FALSE | FALSE | TRUE |
| !isset($var) | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| $var == "" | TRUE | TRUE | TRUE | FALSE | FALSE | FALSE | TRUE |
| $var === "" | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE |
| false == $var | TRUE | TRUE | TRUE | TRUE | FALSE | FALSE | TRUE |
| false === $var | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE |
+--------------------+-------+-------+-------+-------+-------+-------+-------+[/php]

Pour ceux qui ne comprendraient pas clairement ce qui précède, voyez dans la colonne de gauche et, à l'exception de la ligne avec strlen(), écrivez [php]if(expression-de-cette-collone)[/php]Le retour attendu est un booléen.[/quote]

Liens utiles/pratiques
- La référence du manuel, toujours indispensable : http://fr.php.net/types.comparisons;
- Un autre sujet très détaillé de notre ami HyWaN : http://forum.phpfrance.com/faq-tutoriels/isset-empty-null-sont-sur-bateau-t249889.html
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

1 message   •   Page 1 sur 1