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

1 message   •   Page 1 sur 1
Mammouth du PHP | 19627 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 ;) )
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  |
+--------------------+-------+-------+-------+-------+-------+-------+-------+
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
if(expression-de-cette-collone)
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 : faq-tutoriels/isset-empty-null-sont-sur ... 49889.html
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

1 message   •   Page 1 sur 1