Masquer une adresse mail par une image

Soyez le premier à donner votre avis sur cette source.

Vue 10 150 fois - Téléchargée 551 fois

Description

Une méthode pour empêcher les robots des spammers de récupérer une adresse mail sur votre site est de remplacer le "mailto" par une image. C'est plus efficace que les cryptages javascript. Le problème est qu'il faut créer une image pour chaque adresse. Php permet de créer automatiquement une image (png) et d'écrire un texte dans cette image. Le code proposé ici est très simple et n'a rien d'original mais il fonctionne. Il utilise la libraire php "gd2" qui permet de manipuler des images png.
il y a un fichier "creeimage.php" qui crée l'image avec le texte passé en paramètre et un fichier test.php qui montre comment s'en servir.

Source / Exemple :


//le fichier creeimage2.php qui crée les images (une seule fois) et les stocke dans un dossier
<?
//dossier où sont stockées les images (modifiable ..)
 	$dossier="codeimage/images_adresses";

//affichage d'une image png avec un texte
 function imagemail($texte){
	global $dossier; 
 	//nom du fichier png contenant l'image avec le texte $texte
	$fichier=$dossier."/".md5($texte).".png";

 	//création de l'image avec l'adresse (si ce n'a pas déjà été fait antérieurement)
 	creeimage($texte);
	echo "<img align='absbottom' src='$fichier' >";

  }

//crée une image contenant l'adresse $texte et l'enregistre sous le nom md5($texte) où md5 est une fonction de hachage
//(évite ainsi que l'adresse apparaisse en clair dans la page html sous la forme <img src='monadresse@hebergeur.fr'> )

function creeimage($texte) {

	global $dossier; 
 	//nom du fichier png contenant l'image avec le texte $texte
	$fichier=$dossier."/".md5($texte).".png";

	//on vérifie que l'image n'a pas déjà été créée dans le dossier spécifié ($dossier)
	if (file_exists($fichier)){
		return;
		}
		
	//si ce n'est pas le cas on  crée l'image
	
	// definition des dimensions
	$iWidth=strlen($texte)*6.5; 
	$iHeight=20;
	
	$oImage=imagecreate($iWidth, $iHeight);
	
	  // fond blanc
	 imagecolorallocate($oImage, 255, 255, 255);
	//choix de la police
	$iCurrentFont=2;
	//choix de la couleur du texte (noir)
	 $iTextColour = imagecolorallocate($oImage, 0, 0, 0);
	//inscription du texte dans l'imaqe
	 imagestring($oImage, $iCurrentFont, 5, 5,$texte, $iTextColour);
	  // creation de l'image et sauvegarde dans le dossier spécifié sous le nom md5($texte)
	  
	  imagepng($oImage,$fichier);
	  //libération de la mémoire vive occupée par l'image
	  imagedestroy($oImage);
  }
  
 
?>

//le fichier pour tester

<p>bonjour voilà mon adresse mail : 

  <?php 
  
  include "creeimage2.php";
  
  imagemail("alain.baeere@aol.com");
  ?>
  
  <br> et une autre adresse : 
  <?php imagemail("tot.iuyze@aol.com"); ?>

<br> 
et c'est tout

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
vive IE...
Messages postés
47
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
19 novembre 2006
1
oui je sais, mais c pas compatible avec les navigateurs. En tout cas pas dans l'immédiat.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
png gère aussi la transparence...
Messages postés
47
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
19 novembre 2006
1
J'ai changé quelques éléments, çà peut peut-être interesser quelqu'un, au lieu du png, c'est du gif transparent comme çà on peut mettre n'importe quelle couleur de fond dans l'HTML. ^_^


<?
//dossier où sont stockées les images (modifiable ..)
$dossier=".";

//nom du fichier png contenant l'image avec le texte $texte
$fichier=$dossier."/".md5($texte).".gif";

//affichage d'une image png avec un texte
function imagemail($texte){
global $fichier;
global $dossier;

//création de l'image avec l'adresse (si ce n'a pas déjà été fait antérieurement)
creeimage($texte);
echo "";

}

//crée une image contenant l'adresse $texte et l'enregistre sous le nom md5($texte) où md5 est une fonction de hachage
//(évite ainsi que l'adresse apparaisse en clair dans la page html sous la forme )

function creeimage($texte)
{
global $fichier;
global $dossier;

//nom du fichier png contenant l'image avec le texte $texte
$fichier=$dossier."/".md5($texte).".gif";

//on vérifie que l'image n'a pas déjà été créée dans le dossier spécifié ($dossier)
if (file_exists($fichier))
{
return;
}

//si ce n'est pas le cas on crée l'image

// definition des dimensions
$iWidth=strlen($texte)*8;
$iHeight=20;

//choix de la police
$iCurrentFont=3;
$Img = imagecreate($iWidth, $iHeight);

// fond blanc
$background = imagecolorallocate($Img, 255, 255, 255);

// Texte noire
$text = imagecolorallocate($Img, 0, 0, 0);

//inscription du texte dans l'imaqe
imagestring($Img, $iCurrentFont, 5, 5,$texte, $text);

imagecolortransparent($Img, $background);

// creation de l'image et sauvegarde dans le dossier spécifié sous le nom md5($texte)
imagegif($Img,$fichier);

//libération de la mémoire vive occupée par l'image
imagedestroy($Img);
}
?>
Messages postés
22
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
17 mai 2006

Bon, la version avec variable sesssion ne marche pas sous firefox. Pourquoi ? aucune idée.
Du coup j'ai encore changé le code : cette fois j'utilise md5 (suggestion de "kankrelune") pour masquer l'adresse mail dans
Afficher les 15 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.