Bourinho Posté 22 Mai 2006 Posté 22 Mai 2006 (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é 22 Mai 2006 par Bourinho
Bourinho Posté 22 Mai 2006 Auteur Posté 22 Mai 2006 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???
jemords Posté 22 Mai 2006 Posté 22 Mai 2006 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
captain_torche Posté 22 Mai 2006 Posté 22 Mai 2006 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
Bourinho Posté 22 Mai 2006 Auteur Posté 22 Mai 2006 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???
xpatval Posté 22 Mai 2006 Posté 22 Mai 2006 (modifié) J'ai remarqué que toi tu mettais '&&' et non pas '&' entre tes conditions...ça change quelquechose??? <{POST_SNAPBACK}> &: retourne 1 si les bits de même rang de $A et $B (dans le cas: de $A & $ valent 1. 0 dans le cas contraire. &&: retourne True si $A ET $B valent tous les deux true (dans le cas de; $A && $. Autrement dit, ces deux opérateurs ne sont pas utilisés pour les mêmes conditions. xpatval Modifié 22 Mai 2006 par xpatval
Anonymus Posté 22 Mai 2006 Posté 22 Mai 2006 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 (je ne les aient pas appris par coeur.. )
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant