|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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
Sources en rapport avec celle ci
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
|
Téléchargements
Logiciels à télécharger sur le même thème :
|