guill76
Messages postés193Date d'inscriptionmercredi 24 août 2005StatutMembreDernière intervention 3 juin 2016 11 janv. 2008 à 22:47
Pour la question des && dans une condition :
le pb est que si on met des else à traiter derriere un if ( a && b && ..&& ..)
on risque de se tordre les neurones dans tous les sens , c'est là le seul problème.
dorch
Messages postés3Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention 6 janvier 2008 6 janv. 2008 à 18:51
Pour répondre à MALALAM sur l'encodage Base64 servant à tromper les robots. Je suis d'accord avec toi pour dire que ce n'est pas folichon et en plus ça peut provoquer des erreurs car l'encodage en base 64 génère des "+" et des "/" qui génèrent des erreurs de paramètres dans l'URL.
Donc pour un bon cryptage, j'utiliserai plutôt les fonctions mcrypt suivi d'un encodage en base64 en remplaçant les "+" et les "/".
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 6 janv. 2008 à 17:02
@Jan => tout dépendrait de la façon dont PHP traite les opérateurs de comparaison.
En l'occurence, avec un AND, PHP traite d'abord l'expression de gauche; si celle-ci est fausse, la 2de ne sera même pas traitée. Donc si l'ordre est isset($var) && $var === valeur, tout va bien. L'inverse lui provoquerait une erreur.
Exemple :
<?php
error_reporting(E_ALL);
if(isset($a) && $a === true) {
echo 'OK';
} else {
echo 'KO';
}
if( $a === true && isset($a)) {
echo 'OK';
} else {
echo 'KO';
}
?>
Ce code tel quel génèrera une erreur ligne 10, à savoir, sur la 2de condition, alors que la 1ère passe très bien.
En l'occurence il s'agit d'utiliser les spécs du langage.
Personnellement, je préfère une condition bien écrite que 2 conditions imbriquées. Mais ça reste une questiond e préférence de toute manière. Par contre, ça n'a rien de malsain ;-) C'est ainsi que fonctionne PHP, donc c'est parfaitement sain.
Mais si l'on a de très nombreuses expressions à mettre dans une condition, là il vaut mieux découper si l'on veut un code lisible.
Mais encore une fois, tout ça n'est qu'une question de préférence, c'est parfaitement subjectif.
jantosze
Messages postés72Date d'inscriptionmercredi 29 mai 2013StatutMembreDernière intervention15 mai 2009 6 janv. 2008 à 16:43
OK avec toi sur le fait de réaliser un test directement sur base64==1 sans avoir vérifier l'esxitance de base64 est dangereux, parcontre laisser au parser de PHP le soin de gérer des test sous une condition de même niveau et dont l'un conditionne l'autre me semble pas sain. Dans ce cas je préférai écrire 2 tests distincts cela me semble plus simple en lecture et sa ne mange pas de "pain".
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 6 janv. 2008 à 16:28
Hello,
@Jan => ces vérifications sont correctes. Faire
if(isset($var) && $var === 1)
revient très exactement à faire
if(isset($var)) {
if($var === 1)
}
sauf que dans le 1er cas, tu ne fais qu'une condition et que c'est nettement plus lisible.
"car par exemple si base64==1 est vrai alors forcement il existe"
Sauf que si base64 n'existe pas et que tu fais directement if($_GET['base64'] === 1)
tu auras une erreur. Alors qu'en faisant DANS l'ordre
f(isset($_GET['base64']) && $_GET['base64']===1)
tu testes d'abord sont existance, et donc ensuite peut tester sa valeur. Si cette variable n'existe pas, PHP n'ira même pas dans la deuxième condition et ne provoquera donc pas d'erreur.
Au passage, le base64 ne protège pas grand chose...ce n'est pas du cryptage, c'est de l'encodage. Vu que c'est réversible, un robot pas trop con trouvera sans problème le mail.
jantosze
Messages postés72Date d'inscriptionmercredi 29 mai 2013StatutMembreDernière intervention15 mai 2009 6 janv. 2008 à 16:11
Salut,
Je ne saisis pas l'intérêt de [if(isset($_GET['fontsize']) && $_GET['fontsize']!=''] ou [if(isset($_GET['base64']) && $_GET['base64']==1)] car par exemple si base64==1 est vrai alors forcement il existe... Quel intérêt de faire un test d'existence sur fontsize ou base64 si dans le même test tu vérifies les valeurs??? faire un test d'existance sur fontsize et base64 puis en deuxième temps vérifier les valeurs me semble plus appropriés. Qu'en penses tu?
cdt
JAN
petite_etud
Messages postés16Date d'inscriptionmercredi 14 février 2007StatutMembreDernière intervention 4 juin 2009 5 janv. 2008 à 23:02
je suis etudiante,j'ai un projet en php mais j'avai besoin de bien présenter les choses je pense pourquoi pa utiliser votre code pour inserer des images GIF..je vai essayer..merci
dorch
Messages postés3Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention 6 janvier 2008 5 janv. 2008 à 18:36
L'encodage en base64 permet de crypter le mail présent dans l'argument txt.
L'insertion en PHP est la suivante :
echo '';
11 janv. 2008 à 22:47
le pb est que si on met des else à traiter derriere un if ( a && b && ..&& ..)
on risque de se tordre les neurones dans tous les sens , c'est là le seul problème.
6 janv. 2008 à 18:51
Donc pour un bon cryptage, j'utiliserai plutôt les fonctions mcrypt suivi d'un encodage en base64 en remplaçant les "+" et les "/".
6 janv. 2008 à 17:02
En l'occurence, avec un AND, PHP traite d'abord l'expression de gauche; si celle-ci est fausse, la 2de ne sera même pas traitée. Donc si l'ordre est isset($var) && $var === valeur, tout va bien. L'inverse lui provoquerait une erreur.
Exemple :
<?php
error_reporting(E_ALL);
if(isset($a) && $a === true) {
echo 'OK';
} else {
echo 'KO';
}
if( $a === true && isset($a)) {
echo 'OK';
} else {
echo 'KO';
}
?>
Ce code tel quel génèrera une erreur ligne 10, à savoir, sur la 2de condition, alors que la 1ère passe très bien.
En l'occurence il s'agit d'utiliser les spécs du langage.
Personnellement, je préfère une condition bien écrite que 2 conditions imbriquées. Mais ça reste une questiond e préférence de toute manière. Par contre, ça n'a rien de malsain ;-) C'est ainsi que fonctionne PHP, donc c'est parfaitement sain.
Mais si l'on a de très nombreuses expressions à mettre dans une condition, là il vaut mieux découper si l'on veut un code lisible.
Mais encore une fois, tout ça n'est qu'une question de préférence, c'est parfaitement subjectif.
6 janv. 2008 à 16:43
6 janv. 2008 à 16:28
@Jan => ces vérifications sont correctes. Faire
if(isset($var) && $var === 1)
revient très exactement à faire
if(isset($var)) {
if($var === 1)
}
sauf que dans le 1er cas, tu ne fais qu'une condition et que c'est nettement plus lisible.
"car par exemple si base64==1 est vrai alors forcement il existe"
Sauf que si base64 n'existe pas et que tu fais directement if($_GET['base64'] === 1)
tu auras une erreur. Alors qu'en faisant DANS l'ordre
f(isset($_GET['base64']) && $_GET['base64']===1)
tu testes d'abord sont existance, et donc ensuite peut tester sa valeur. Si cette variable n'existe pas, PHP n'ira même pas dans la deuxième condition et ne provoquera donc pas d'erreur.
Au passage, le base64 ne protège pas grand chose...ce n'est pas du cryptage, c'est de l'encodage. Vu que c'est réversible, un robot pas trop con trouvera sans problème le mail.
6 janv. 2008 à 16:11
Je ne saisis pas l'intérêt de [if(isset($_GET['fontsize']) && $_GET['fontsize']!=''] ou [if(isset($_GET['base64']) && $_GET['base64']==1)] car par exemple si base64==1 est vrai alors forcement il existe... Quel intérêt de faire un test d'existence sur fontsize ou base64 si dans le même test tu vérifies les valeurs??? faire un test d'existance sur fontsize et base64 puis en deuxième temps vérifier les valeurs me semble plus appropriés. Qu'en penses tu?
cdt
JAN
5 janv. 2008 à 23:02
5 janv. 2008 à 18:36
L'insertion en PHP est la suivante :
echo '';