Créer une image pour afficher les email et empecher le spam

Contenu du snippet

Bonjour à tous.
Petite asutce pour celles et ceux qui utilisent mysql (peut etre adapter à un fichier texte).
Cette source vous permez dans une page web d'afficher dans une image une adresse email afin qu'elle ne soit pas utilisé par les robots des spammeurs.

Source / Exemple :


//Dans où doit figurer l'adresse email afficher ça ($id étant ici le numero unique de la personne qui est propriétaire de l'adresse email) :

<?php echo" <a href='contact.php?id=$id&di=$id' target='_self'><img border='0' align='absmiddle' src='creationimage.php?id=$id'></a>"; ?>

//On fait appel au fichier creationimage.php pour dessiner l'adresse email en recuperant la valeur $_GET de id :

<?php
header("Content-type: image/png");

//lecture du fichier qui contient les informations pour faire la connexion à votre base de donnée
require_once('votrebase.php');
session_start();
/* teste si $_GET['id'] existe, si oui on execute la requete pour recupère l'email associé dans la base de donnée */
if ( (isset($_GET["id"])) && ($_GET["id"]!="") ) 
{
	$id=$_GET["id"];
}
mysql_select_db($database_votrebase, $votrebase);
$query_rsUtilisateur = "SELECT id, log, email FROM utilisateurs WHERE id = '$id'";
$rsUtilisateur = mysql_query($query_rsUtilisateur, $votrebase) or die(mysql_error());
$row_rsUtilisateur = mysql_fetch_assoc($rsUtilisateur);
$totalRows_rsUtilisateur = mysql_num_rows($rsUtilisateur);
$mail=$row_rsUtilisateur["email"];

/* cette partie est en rapport avec contact.php. On verifie l'existance de la valeur $_GET['di'] passé en parametre, si elle existe on verifie si le code de validation de la page contact.php correspond au texte crée aléatoirement  auparavant */
if ( (isset($_GET['di'])) && ($_GET['di']!='') ) 
{

	if ( (empty($_SESSION['code'])) || (strlen($_SESSION['code']) !=5) || ($_SESSION['code'] != $_POST['verif']) ) 
	{ 
		exit("Erreur, redirection automatique ! "."<html><head><META HTTP-EQUIV='Refresh' CONTENT='4;URL=pagededepart.php?id=$id'></head><BODY></body></html>"); 
	}
	if ($_SESSION['code'] == $_POST['verif']) 
	{
		// si le code de verification est ok, alors on redirige ouvre le logiciel de courriel avec le header et on redirige vers la page de départ, sinon on redirige directement vers la page de départ sans ouvrir le logiciel de départ
		header("Location: mailto:$mail");
		echo "<html><head><META HTTP-EQUIV='Refresh' CONTENT='0;URL=pagededepart.php?id=$id'></head><BODY></body></html>";
		
		// on detruit les variables de session, et ensuite on détruit la session
		session_unset();
		session_destroy();
	}
	else 
	{ 
		echo "<html><head><META HTTP-EQUIV='Refresh' CONTENT='0;URL=pagededepart.php?id=$id'></head><BODY></body></html>"; 
	}
}
else 
{
	$larg = 210;
	$haut =16;
	$img = imagecreate($larg, $haut);
	$rouge = imagecolorallocate($img,255, 239, 189);
	$plot = 0;
	
		while($plot < 7)
		{
			imageline($img, rand(1, 250), rand(1, 40), 0, $plot, imagecolorallocate($img, 255, 0, 0));
			$plot++;
		}
	$noir = imagecolorallocate($img,0,0,0);
	$corp=2;
	header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
	header('Cache-Control: no-store, no-cache, must-revalidate'); 
	header('Cache-Control: post-check=0, pre-check=0', false); 
	header("Content-type: image/png");
	imagestring($img, $corp,5,0, $text,$noir);
	imagepng($img,'',40);
	imagedestroy($img);
}

?>

// dans la page contact.php

<?php
/* on sauvegarde la valeur de $_GET['di'] */

if ( (isset($_GET['di'])) && ($_GET['di']!="") ) 
{
	$_SESSION['di']=$_GET['di'];
}
if ( (isset($_GET['id'])) && ($_GET['id']!="") ) 
{
	$id=$_GET['id'];
}
?>

<form action="creationimage.php?<?php echo "id=$id&di=$id"; ?>" method="post"><br /><br />
<img src="crypteimage.php" alt="Securisation du formulaire" width="150" height="35" title="Securisation du formulaire" /><br /><br />
<input type="text" name="verif" size="10" maxlength="6" /><br /><br />
<input type="submit" value="Envoyer" />
</form>

// dans la page crypteimage.php

<?php
/* Démarage d'une session nécéssaire pour récupérer la valeur générée d'une page a l'autre */
session_start();
$liste = "abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
/* On créer une valeur qui sera notre code secret a saisir */
$code = '';
/* On crée une boucle pour créer une chaine de 5 caractères aléatoires parmis les caractères de la variable $liste */
while(strlen($code) != 5) {
$code .= $liste[rand(0,63)];
}
/* on définit une variable de session nomée $_SESSION['code']  */
$_SESSION['code']=$code;
/* On crée une image de 70 pixels par 20 pixels plus petite que l'image à afficher afin de tromper le bot */
$largeur = 70;
$haut =20;
$img = imagecreate($largeur, $haut);
$rouge = imagecolorallocate($img,255,0,0);
$plot = 0;

  while($plot < 256)
{
   /* dessine les lignes et bouge avec un effet gradiant */
   imageline($img, rand(0, 50), rand(0, 20), 255, $plot, imagecolorallocate($img, $plot, $plot, $plot));
   $plot++;
}
$noir = imagecolorallocate($img,0,0,0);
$corp=5;
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Cache-Control: no-store, no-cache, must-revalidate'); 
header('Cache-Control: post-check=0, pre-check=0', false); 
header("Content-type: image/png");

/* Ajout de la variable $code, à l'image */
imagestring($img, $corp,($largeur-imageFontWidth($corp)*strlen("".$code.""))/2,0, $code,$noir);

/* qualité de l'image à 40 % pour éviter que ce soit trop lisible */
imagepng($img,'',40);
imagedestroy($img);

/* et voila le tour est joué, complique les choses pour les spammeurs.
J'espere ne rien avoir oublié car j'ai supprimé pas mal de chose par rapport à mon code perso */
?>

Conclusion :


Peut etre la création automatique d'une anime flash (en swf ou en ming) au lieu d'une image...

A voir également

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.