Aller au contenu

Y a t'il un ordre dans les conditions?


Sujets conseillés

Posté (modifié)

Bonjour à tous,

je me pose une question non pas pour résoudre un problème mais pour rendre un code plus agréable à la lecture. Voilà l'objet de la question :

if (isset($_SERVER['HTTP_REFERER']))
{
if ($_SERVER['HTTP_REFERER']==$MonDomaine.'inscription.php')
       {
        echo "Mon site va tout déchirer";
        }
        else
        {
        echo "Mais quelle page t'a amené ici???";
        }
}
else
{
echo "Mais quelle page t'a amené ici???";
}

Bon, c'est pour l'exemple mais cela met bien le doigt sur ce qui m'embête. Vous voyez que sur ce code, pour dire :

"Si $_SERVER['HTTP_REFERER'] est différent $MonDomaine.'inscription.php' affiche "Mais quelle page t'a amené ici???" ".

je suis obligé de 'recopier' " echo "Mais quelle page t'a amené ici???" " deux fois, ce qui n'est pas très agréable à lire. Je sais que je pourrais faire un include mais je trouve ça plutôt dommage.

Donc je me suis dit, il y a peut-être un ordre dans les conditions dans le but de faire un seul if. En effet, pour une condition qui contient un '&', si l'une des deux sous-conditions n'est pas vérifiée, il n'est pas nécessaire de se pencher sur la seconde. Enfin, le 'if' en question ressemblerait à celui ci:

if (($_SERVER['HTTP_REFERER']==$MonDomaine.'inscription.php')&(isset($_SERVER['HTTP_REFERER'])))

J'ai essayé dans les deux sens et j'ai toujours le WARNING qui s'affiche sur la page en question. Alors si jamais quelqu'un a une solution pour éviter un include ou un copier/coller, je suis preneur.

Par avance, merci...

Modifié par Bourinho
Posté

Pardon, ce post est sans doute inutile... J'ai trouvé la solution à mon problème, mais bon, ça soulève une question tout de même : "Y a t'il un ordre dans les conditions???

Posté

Oui il y a un order, la premiere condition doit etre verifie pour suivre les autres.

Par exemple

if(isset($_SERVER['http...']) && $_SERVER['http....'] == 'blabla')

Si le isset est verifie alors le serveur verifie la seconde sinon byebye

Posté

Et dans le cas d'une condition OR ?

Ca ne tiendrait pas la route :

if(condition1 || condition2) doit être évaluée même si condition1 n'est pas vérifiée.

Pour faire simple; une condition (ou un ensemble de conditions), ne peut être évaluée que si elle équivaut à true.

si condition1 == false (non vérifiée), et condition2 == true (vérifiée), on a:

if(condition1 && condition2) => if(false && true) => if(false) => la condition n'est pas vérifiée

if(condition1 || condition2) => if(false || true) => if(true) => la condition est vérifiée.

J'espère avoir été suffisament clair ;)

Posté

Mais ça affiche le WARNING dans tous les cas ???

Parce que j'ai essayé dans les deux ordres et à chaque fois j'ai eu le WARNING!!! J'ai remarqué que toi tu mettais '&&' et non pas '&' entre tes conditions...ça change quelquechose??? :wacko:

Posté (modifié)
J'ai remarqué que toi tu mettais '&&' et non pas '&' entre tes conditions...ça change quelquechose??? :wacko:

<{POST_SNAPBACK}>

&: retourne 1 si les bits de même rang de $A et $B (dans le cas: de $A & $B) valent 1. 0 dans le cas contraire.

&&: retourne True si $A ET $B valent tous les deux true (dans le cas de; $A && $B).

Autrement dit, ces deux opérateurs ne sont pas utilisés pour les mêmes conditions.

xpatval

Modifié par xpatval
Posté

Il y a un ordre strict entre les conditions :

entre 2 conditions différentes : 'and' et 'not' par exemple

entre 2 conditions identiques : 'and' et '&&' par exemple.

Pour l'ordre exact, se référer au manuel :D

(je ne les aient pas appris par coeur.. )

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...