
Envoyé par
SegmentationFault
c'est pas tout à fait le cas.
parce que si je ne remplit pas de date dans son formulaire et j'envoi, isset va lui rendre true dans les trois champs malgré qu'ils sont vides et c'est ce qu'il ne veut pas traiter!!alors l'utilisation de isset n'est pas conseillé! moi je dirai plutot pq pas utiliser empty toute seule sans isset
Je ne suis pas d'accord non plus, avec l'un ou l'autre.
Le but de isset est de verifier qu'une variable existe, l'avantage de cette fonction est qu'elle permet de ne pas afficher une erreur "Undefined index" si on tente d'acceder a un index de tableau qui n'existe pas. Il faudrait donc tester empty en effet, mais "protégé" par un isset afin de ne pas lever l'exception si un petit malin s'amuse a attaquer la page en POST sans les variables (je suis d'accord, ca sert pas a grand chose, mais au moins le code est propre, ca montre que l'on sait ce que l'on fait).
Donc, pour résumer :
1 2 3 4
| if (!isset($_POST['champ']) || empty($_POST['champ']
|| !isset($_POST['champ2']) || empty($_POST['champ2']) {
echo "Champs manquants";
} |
Listes des cas possibles :
* champ non défini : !isset renvoi TRUE, on execute pas le empty (TRUE OR X = TRUE, le champ est considéré comme vide)
* champ défini : !isset renvoi FALSE, on execute le empty :* champ vide : empty renvoi TRUE : FALSE OR TRUE = TRUE, le champs est considéré comme vide)
* champ non vide : empty renvoi FALSE : FALSE OR FALSE = FALSE, le champs n'est pas considéré comme vide
Et on ajoute des || (et non des &&) entre les conditions pour verifier que TOUT les champs sont remplis... si tu utilise des &&, ca passera si tu as un seul champ rempli... au vu de ton code, je ne crois pas que ce soit ce que tu veuilles, car les 3 champs servent a construire une seule et meme date. Donc si il en manque une, tu aura une "portion de date" qui fera sans aucun doute planter la requete SQL derriere...
Partager