begin process at 2012 05 27 19:46:27
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & Cryptage

 > CRÉER UNE IMAGE GIF TRANSPARENT CONTENANT UN TEXTE

CRÉER UNE IMAGE GIF TRANSPARENT CONTENANT UN TEXTE


 Information sur la source

Note :
Aucune note
Catégorie :Sécurité & Cryptage Classé sous :email, spam, image, gif Niveau :Débutant Date de création :05/01/2008 Date de mise à jour :06/01/2008 19:01:01 Vu :19 689

Auteur : dorch

Ecrire un message privé
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Le script suivant permet de créer une image GIF transparente avec un texte.
Cette fonction est très utile pour afficher des adresses mails non détectable pour les bots de spam.

Par rapport aux autres sources que j'ai pu trouver sur le sujet celle-ci a les avantages suivants :
- fond transparent pour une meilleure intégration à l'esthétique du site
- simplicité d'utilisation (adresse .php avec un argument GET)

Source

  • <?php
  • /**************************************************************************
  • * texteimage.php
  • *
  • * Création d'une image gif transparent pour affichage d'un texte dans une image
  • * Licence GPL (c)janvier 2008
  • * Auteur : David Dorchies (dorch chez laposte . net)
  • * Site internet : http://www.dorch.fr
  • **************************************************************************
  • *
  • * Exemple d'utilisation :
  • *
  • * Pour afficher une image à la place d'un texte dans une page web insérer
  • * le code HTML suivant :
  • * <img scr="texteimage.php?txt=jean.dupont@toto.com&fontsize=4">
  • *
  • * NB : dans cet exemple le fichier texteimage.php doit se trouver dans le même
  • * répertoire que la page HTML en question.
  • *
  • * L'argument fontsize est facultatif et est réglé à 4 par défaut
  • * L'argument base64 est facultatif et est réglé à 0 par défaut
  • * base64=1 veut dire que txt est encodé en base64
  • *
  • * Nécessite une librairie GD différente de la 1.6 (absence des fonctions GIF)
  • *
  • */
  • $err='';
  • if (!function_exists("ImageCreate")) $err='Erreur : Librairie GD non installée !';
  • if (!$err && !function_exists("imagegif")) $err='Mauvaise version de librairie GD : absence de la fonction imagegif';
  • if($err) {
  • header('Content-Type: text/plain');
  • echo $err;
  • return;
  • }
  • //Définition du texte
  • $txt='no text';
  • if(isset($_GET['txt']) && $_GET['txt']!='') {
  • $txt=html_entity_decode($_GET['txt']);
  • }
  • //définition de la taille
  • $corp=4;
  • if(isset($_GET['fontsize']) && $_GET['fontsize']!='') {
  • $corp = $_GET['fontsize'];
  • }
  • if(isset($_GET['base64']) && $_GET['base64']==1) {
  • $txt = base64_decode($txt);
  • }
  • $haut = $corp*4.5; //Hauteur de l'image à créer
  • $larg = strlen($txt)*$haut/1.6; //Largeur de l'image à créer
  • $img = imagecreate($larg, $haut); //Création de l'image
  • $background_color = imagecolorallocate ($img, 0, 0, 0);
  • $transparent_color = imagecolortransparent($img,$background_color);
  • $noir = imagecolorallocate($img,0,0,0);
  • imagestring($img, $corp,0,0, $txt,$noir);
  • header("Content-type: image/gif");
  • imagegif($img);
  • ?>
<?php 
/**************************************************************************
 * texteimage.php                      
 * 
 * Création d'une image gif transparent pour affichage d'un texte dans une image                                    
 * Licence GPL (c)janvier 2008
 * Auteur : David Dorchies (dorch chez laposte . net)
 * Site internet : http://www.dorch.fr
 **************************************************************************
 * 
 * Exemple d'utilisation :
 * 
 * Pour afficher une image à la place d'un texte dans une page web insérer
 * le code HTML suivant :
 * <img scr="texteimage.php?txt=jean.dupont@toto.com&fontsize=4">
 * 
 * NB : dans cet exemple le fichier texteimage.php doit se trouver dans le même
 * répertoire que la page HTML en question.
 *
 * L'argument fontsize est facultatif et est réglé à 4 par défaut
 * L'argument base64 est facultatif et est réglé à 0 par défaut
 * base64=1 veut dire que txt est encodé en base64
 *   
 * Nécessite une librairie GD différente de la 1.6 (absence des fonctions GIF)
 * 
 */
$err='';
if (!function_exists("ImageCreate")) $err='Erreur : Librairie GD non installée !';
if (!$err && !function_exists("imagegif")) $err='Mauvaise version de librairie GD : absence de la fonction imagegif';

if($err) {
		header('Content-Type: text/plain');
		echo $err;
		return;
}

//Définition du texte
$txt='no text';
if(isset($_GET['txt']) && $_GET['txt']!='') {
	$txt=html_entity_decode($_GET['txt']);
}

//définition de la taille
$corp=4;
if(isset($_GET['fontsize']) && $_GET['fontsize']!='') {
	$corp = $_GET['fontsize'];
}

if(isset($_GET['base64']) && $_GET['base64']==1) {
	$txt = base64_decode($txt);
}
	$haut = $corp*4.5; //Hauteur de l'image à créer
	$larg = strlen($txt)*$haut/1.6; //Largeur de l'image à créer
	$img = imagecreate($larg, $haut); //Création de l'image
	$background_color = imagecolorallocate ($img, 0, 0, 0);
	$transparent_color = imagecolortransparent($img,$background_color);
	$noir = imagecolorallocate($img,0,0,0);
	imagestring($img, $corp,0,0, $txt,$noir);
	header("Content-type: image/gif");
    imagegif($img);
?>



 Historique

05 janvier 2008 23:42:10 :
Dans //définition de la taille C'est if(isset($_GET['fontsize']) && $_GET['fontsize']!='') à la place de if(isset($_GET['fontsize']) && $_GET['fontsize']=='') Erreur bête :)
06 janvier 2008 19:01:01 :
Définir $base64=0 et ne pas s'en servir après, ça ne sert pas à grand chose...

 Sources de la même categorie

Source avec Zip Source avec une capture CAPTCHA AJAX ANTI-BOT par darkvador59
Source avec Zip Source avec une capture ACCÈS, ESPACE MEMBRE AVEC INSCRIPTION ET DÉSINSCRIPTION PAR ... par stephelle
Source avec Zip CRYPTAGE REVERSIBLE par Mokost
Source avec Zip Source avec une capture CREATION DE COMPTE AVEC CRYPTAGE ET ESPACE DE CONNEXION SEC... par bm1982
PROTÉGEZ VOS LIENS DE TÉLÉCHARGEMENT PAR MOT DE PASSE ET/OU ... par unlien

 Sources en rapport avec celle ci

Source avec Zip REDIMENSIONNER UNE IMAGE PHP (GD VERSION 2 REQUISE) par CrazyShooter
Source avec Zip Source avec une capture AFFICHER UN CODE, UN TEXTE, SOUS LA FORME D'UNE IMAGE PLUS O... par bluemandfr
Source avec Zip Source avec une capture CLASSE DE MESSAGERIE par janhsh
Source avec Zip Source avec une capture GÉNÉRATEUR D'IMAGES GIF AFFICHANT UN CALENDRIER TYPE FEUILLE... par webrunner
Source avec Zip Source avec une capture IMAGE ANTI-SPAM par coockiesch

Commentaires et avis

Commentaire de dorch le 05/01/2008 18:36:13

L'encodage en base64 permet de crypter le mail présent dans l'argument txt.
L'insertion en PHP est la suivante :
echo '<img src="texteimage.php?txt='.
  str_replace('=','',base64_encode('jean.dupont@toto.com')).
  '&base64=1"  align="top">';

Commentaire de petite_etud le 05/01/2008 23:02:25

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

Commentaire de jantosze le 06/01/2008 16:11:40

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

Commentaire de malalam le 06/01/2008 16:28:37 administrateur CS

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.

Commentaire de jantosze le 06/01/2008 16:43:27

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".

Commentaire de malalam le 06/01/2008 17:02:02 administrateur CS

@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.

Commentaire de dorch le 06/01/2008 18:51:29

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 "/".

Commentaire de guill76 le 11/01/2008 22:47:52

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.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

transparence sur gif ou png [ par kikistef ] Je recherche le moyen de creer un nouveau fichier image (gif ou png) à partir d'un gif ou png en utilisant la palette d'une autre image. Ca marche mai échanges intervalles réguliers d'images [ par kartoon ] Bonsoir!J'ai des images(dans une popup) déclarées comme ceci:var image = new Image();new Image = ('n1.gif','n2.gif','n3.gif','n4.gif','n5.gif','n6.gif code anti-robot spam, rassembler des images pr n'en faire qu'une... ? [ par netwebzone ] Bonjour,Vous savez qu'il y a beaucoup de robots de spam qui scrutent le web et donc j'aimerais les empecher de remplir mes formulaires en cr&#233;ant Mise en commun de plusieurs fonctions ... je sais plus quoi faire [ par Nownow ] Voil&#224; ... j'ai&nbsp;4 scripts : un pour uploader une image, l'autre pour la redimensionner correctement, un script d'affichage&nbsp;et enfin&nbsp Gif animé avec image magick ? [ par rigolman ] Bonjour à tous, j'ai vraiment du mal à trouver quelque chose (code ou autre) qui me permettrait de comprendre comment créer un gif animé avec image Qualité horrible d'une vignette GIF transparent lors du redimentionnement [ par khoudj ] Bonjour, j'ai un petit probl&#232;me: quand je cr&#233;e en php une vignette d'une image gif avec une transparence, la vignette est bien cr&#233;e, & transparence des Images dynamique... [ par kroland ] BONSOIR A TOUS Voil&#224; je suis en train de cr&#233;&#233; un service de compteur graphique (http://www.chezdavid.tk) (qui utilise le proc&#233;d&# Génération dynamique d'image gif [ par spardo ] Bonjour Voil&#224;, je dois trouver un script qui puisse g&#233;n&#233;rer des images param&#232;trables comme changer la couleur, la police, la tail Image générant un code [Soucis of course :D] [ par Mizuka ] Bonsoir confr&#232;re codeurs :D Voil&#224; je suis sur un script d'inscription. Et l&#224; en ce moment je butte sur un code qui est cr&#233;e par u Fonctions de réduction et de restitution de la taille d'une image [ par amewole ] Bonjour,Je cherche deux fonctions qui permettent&nbsp; d'une part de r&#233;duire la taille d'une image (JPG,JPRG, GIF ..) et d'autre part&nbsp; de re


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales