[Résolu]Tester une variable pouvant avoir des valeurs co...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [Résolu]Tester une variable pouvant avoir des valeurs co...

[Résolu] Re: Tester une variable pouvant avoir des valeurs c

par ich » 24 sept. 2011, 11:57

Ton problème est en fait uniquement un soucis de logique booléenne :)

En effet, dans ton testes tu affiches un message d'erreur si $valeur est différent de 0 OU si $valeur est différent de 0. Du coup, lorsque $valeur est égale à 1, il est donc différent de 0 et le test est vrai. De même lorsque la valeur est égale à 0, elle est différente de 1 et le test est vrai.

Le contraire de la condition (A==0 OU A==1) c'est (A!=0 ET A!=1), il faut non seulement inverser les opérateurs de comparaison, mais également les opérateurs booléen. Ainsi, ton test sera vrai si A est à la fois différent de 0 et de 1 :)

Merci beaucoup cela fonctionne exactement comme je le voulais :)
Quand j'avais tester cette méthode (avant de poster ce message ici), j'avais du me planter dans la syntaxe, car cela ne fonctionnait pas. Comme quoi une bonne nuit de sommeil et des yeux venants de l’extérieur les solutions sont à portées de main. :)

Encore Merci Ryle et nicolas pour votre aide

Re: Tester une variable pouvant avoir des valeurs connues

par Ryle » 24 sept. 2011, 11:45

Ton problème est en fait uniquement un soucis de logique booléenne :)

En effet, dans ton testes tu affiches un message d'erreur si $valeur est différent de 0 OU si $valeur est différent de 0. Du coup, lorsque $valeur est égale à 1, il est donc différent de 0 et le test est vrai. De même lorsque la valeur est égale à 0, elle est différente de 1 et le test est vrai.

Le contraire de la condition (A==0 OU A==1) c'est (A!=0 ET A!=1), il faut non seulement inverser les opérateurs de comparaison, mais également les opérateurs booléen. Ainsi, ton test sera vrai si A est à la fois différent de 0 et de 1 :)

Re: Tester une variable pouvant avoir des valeurs connues

par ich » 24 sept. 2011, 11:34

Est ce qu'il y un moyen plus simple ou de plus propre pour vérifier les conditions ?
Une meilleure (je n'ai pas dit la meilleure) manière de faire et plus évolutive est de générer ton formulaire à partir des données en php.
Je m'explique. Tu peux par exemple avoir les données sous cette forme :

Code : Tout sélectionner

$champ1 = array('cle1' => 'valeur1', 'cle2' => 'valeur2',...); $champ2 = array('autre_cle1' => 'autre_valeur1', 'autre_cle2' => 'autre_valeur2',...)
Après pour générer les valeurs des champs de ton formulaire tu utilises ces tableaux. Je pense par exemple aux options d'un SELECT en faisant une boucle.

Et après la soumission du formulaire, il suffit de vérifier que les clés contenues dans le tableau $_POST sont bien présentes dans les clés autorisées du champ correspondant avec la fonction IN_ARRAY par exemple.
Merci Nicolas pour ton retour.

J'y avais pensé de passer par un tableau. Mais je trouve cela un peu lourd, surtout quand tu sais que tu ne peux avoir que 0 ou 1 comme valeur pour un champ donnée.
Je vais créer une fonction en mettant la condition $valeur==1 || $valeur==0 et je retournerais true ou false en fonction si la condition est vrai ou pas.

Re: Tester une variable pouvant avoir des valeurs connues

par nicolas » 24 sept. 2011, 10:49

Est ce qu'il y un moyen plus simple ou de plus propre pour vérifier les conditions ?
Une meilleure (je n'ai pas dit la meilleure) manière de faire et plus évolutive est de générer ton formulaire à partir des données en php.
Je m'explique. Tu peux par exemple avoir les données sous cette forme :

Code : Tout sélectionner

$champ1 = array('cle1' => 'valeur1', 'cle2' => 'valeur2',...); $champ2 = array('autre_cle1' => 'autre_valeur1', 'autre_cle2' => 'autre_valeur2',...)
Après pour générer les valeurs des champs de ton formulaire tu utilises ces tableaux. Je pense par exemple aux options d'un SELECT en faisant une boucle.

Et après la soumission du formulaire, il suffit de vérifier que les clés contenues dans le tableau $_POST sont bien présentes dans les clés autorisées du champ correspondant avec la fonction IN_ARRAY par exemple.

[Résolu]Tester une variable pouvant avoir des valeurs co...

par ich » 24 sept. 2011, 10:28

Bonjour à tous,

Je me permets de vous poster cette question, car malheureusement je n'ai rien trouvé sur le forum (ou j'ai mal chercher au niveau des critères de recherche)

Voilà ma question:
- Je reçois via un formulaire une valeur depuis un champ nommé (que je vais nommé ici $valeur)
- Je sais que $valeur ne peut avoir comme valeur 1 ou 0

J'ai donc écrit naturellement:
if (($valeur!= 0) || ($valeur!= 1))
{
 print("erreur");
}
Mais en faite quelque soit la valeur de $valeur, cette condition me retourne vrai.

Par contre si j'ecris comme ceci:
if (($langueactif == 0) || ($langueactif == 1))
{
}
else
{
	print(erreur);
}
Cela fonctionne.

Est ce qu'il y un moyen plus simple ou de plus propre pour vérifier les conditions ?

Merci par avance pour votre retour,

Olivier