Accueil > > > CRÉER UNE IMAGE POUR AFFICHER LES EMAIL ET EMPECHER LE SPAM
CRÉER UNE IMAGE POUR AFFICHER LES EMAIL ET EMPECHER LE SPAM
Information sur la source
Description
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
- //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 */
- ?>
//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...
Historique
- 02 mai 2006 15:32:37 :
- Ajout de l'imprime ecran (n'est pas très explicite, le mieux s'est de tester mon code).
- 15 mai 2006 17:56:01 :
- Ajout de l'image aléatoire, et compilation de deux pages en une !
- 15 mai 2006 19:29:28 :
- Rendu de l'image aleatoire moins lisible avec l'ajout de ligne dans le fond
- 15 mai 2006 21:41:43 :
- Nouvelle mise à jour du code et ajout du cryptage de l'image afficher sur la première page
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Problème de compatibilité de script [ par Chris54 ]
Bonjour,J'ai un problème d'execution d'un script javascript sous netscape alors qu'il fonctionne parfaitement sous IE mais je ne sais pas pourquoi.Que
formulaire pour e-mail invisible [ par pyranhaz ]
Bonjour,Je cherche à élaborer un formulaire php afin que les clients de mes petites annonces puissent envoyer leur réponse sans connaître le e-mail du
envoie d'Email :Je dois avoir de la merde dans les yeux [ par Wam0106 ]
Voila chez Online.net il me dise qu'il y a une erreure a la ligne 3 mais je ne vois pas ou est le pb si qq'un peu me dire ce qui ne va pas:<? $head
fonction mail ? [ par badjouane ]
comment puis evité le "/" qui jalone les mail que j'envoi à partir de la section administration de mon site.Par exemple, si j'écri :Mes c'est quoi ce
aidez moi pb avec email !! [ par anisbs ]
Salut je suis débutant en phpje commence a essayer quelques trucs mais la fonction mail ne fonctionne pas Il me sort un truc comme :Warning: mail():
Mail et formulaire [ par Jackboy ]
J'aimerai créer un formulaire, assez complexe (pas seulement email, nom, message,...) et j'aimerai avoir ce formulaire envoyer dans un email et format
Capter l'email une fois lu. [ par zzzzzz ]
Salutj'aimerai savoir si il y a un moyen de "capter" l'email d'un destinataire. Si par exemple j'envoie un mail à bidon@hotmail.comj'aimerai appellé u
Mail et anti-spam? [ par Varod ]
Bonjour tout le monde,Dans une application de sondage en ligne, j'utilises la fonction mail pr envoyer un lien vers le site ou est hebergé mon applica
Envoyer bcp de email avec mail() [ par ImmortalPC ]
Salut, Je me pose à un gros problème sur un de mes scripts, envoyer beaucoup d'email ( environs 20 000 ). Le problème c'est le time ou
Expediteur dans fonction Mail() [ par Bowlest ]
Bonjour,J'ai un mini problème: en fait ma fonction mail marche trés bien, mais lorsque je reçois le mail, son expéditeur est "Apac
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|