CRÉER UNE IMAGE GIF TRANSPARENT CONTENANT UN TEXTE

dorch Messages postés 3 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 6 janvier 2008 - 5 janv. 2008 à 18:36
guill76 Messages postés 193 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 3 juin 2016 - 11 janv. 2008 à 22:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45316-creer-une-image-gif-transparent-contenant-un-texte

guill76 Messages postés 193 Date d'inscription mercredi 24 août 2005 Statut Membre Derniè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és 3 Date d'inscription dimanche 26 janvier 2003 Statut Membre Derniè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és 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
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és 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 15 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és 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
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és 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 15 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és 16 Date d'inscription mercredi 14 février 2007 Statut Membre Derniè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és 3 Date d'inscription dimanche 26 janvier 2003 Statut Membre Derniè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 '';
Rejoignez-nous