Les derniers scripts | Les plus téléchargés | Ajouter un script Accueil | Forum | Livre d'Or | E-mail 
Mail

brouille e-mail par Xavier LARQUET [0] Commentaires | Télécharger | Recevoir par mail
Fonction PHP permettant de générer une chaîne cryptée et le javascript qui, lors de son évaluation par le browser côté client, affichera l'e-mail passée en paramètre avec ou sans les balises.
Permet de ne pas avoir le mail en clair dans le code source d'une page pour une prévention de premier niveau d'extraction de e-mail par des logiciels d'analyse de page destinés au spam.
Maintenant c'est à vous de faire preuve d'imagination en modifiant la méthode de codage et les fonctions js utilisées...
<?php
function brouille_mail($mail,$balise)
{
// Si vous pouviez ne pas supprimer le commentaire ci-dessous
// merci à François de http://aspirine.org/emailcode.php
// source de mon empressement à créer cette fonction
// que j'utilise sur mon site à la page
// http://xavier.larquet.free.fr/dess/des_affiche.php
// source aussi de la technique utilisée

// brouillage à 2 niveau
// 1 : on ne passe pas le mail ou la balise et le lien en clair mais comme une chaîne à évaluer en js
// 2 : la chaîne n'est pas passée tel quel mais décallée

// 1 : génération de la chaîne à évaluer :
  
$bourage=(strlen($mail)%3)+1;
  switch(
$bourage){
    case 
1:
       
$bour="a";
       break;
    case 
2:
       
$bour="ab";
       break;
    case 
3:
       
$bour="abc";
       break;
    default:
       
$bour="a";
  }
  
$balise_mail_deb="maito:";
  
$balise_mail_fin=">";
  if (
$balise)$len1=strlen($balise_mail_deb)+strlen($mail)+strlen($balise_mail_fin);
  else 
$len1=strlen($mail);
  
$pos1=$bourage+$len1;
// le caractère @ peut être remplacé en js par \x40 qui est interprété comme un seul caractère
// donc la longueur doit-être calculée avant ce remplacement
  
$mail=str_replace('@','\\x40',$mail);
  if (
$balise)
  {  
    
$str_in "eval(document.write('".$bour.$balise_mail_deb.$mail.$balise_mail_fin.$bour."'";
    
$str_in .= ".substring(".$bourage.",".$pos1.").replace(/".$balise_mail_deb."/,\"<a href=mailto:\")))";
  } else
  {
    
$str_in "eval(document.write('".$bour.$mail.$bour."'";
    
$str_in .= ".substring(".$bourage.",".$pos1.")))";
  }
  
// 2 : Décallage
  
$str_out="";
  
$len2=strlen($str_in);
  
$decal = (strlen($mail) %) + 1;
  for (
$i 0;$i $len2;$i++)$str_out .= addslashes(chr(ord(substr($str_in,$i,1))-$decal));

// Génération du js de decallage inverse et d'évaluation
  
echo "<script type=\"text/javascript\" langage=\"javascript\">\n";
  echo 
"<!--\n";
  echo 
"var d=\"\";\n";
  echo 
"for (var i=0 ; i < $len2 ; i++)d+=String.fromCharCode((\"".$str_out."\".charCodeAt(i)+$decal));\n";
  echo 
"eval(d);\n";
  echo 
"//-->\n";
  echo 
"</script>\n";
}

// exemple d'appel
// certains nouveaux aspirateurs de mails laissent ie interpréter une page avant d'en retirer les mails
// (ex : aspiro mail)
// => le code js n'est pas sufisant c'est pour cela qu'en plus je demande de cliquer sur un bouton
// pour rappeler la même page et l'afficher seule une action volontaire et non automatique le permet
// pour l'instant ...

if (isset($_POST["submit"]))
{
  
brouille_mail("moi@ici.fr",TRUE); // <=> echo "<a href=mailto:moi@ici.fr>"
  
brouille_mail("moi@ici.fr",FALSE); // <=> echo "moi@ici.fr"
  
echo "</a>\n";
} else
{
  echo 
"<form name=\"form1\" method=\"post\" action=\"cette-même-page.php\">\n";
  echo 
" <input type=\"submit\" name=\"submit\" value=\"Voir mon mail\">\n";
  echo 
"</form>\n";
}
?>



Voir toutes les portions de scripts de la même catégorie.

MAJ : 27/03/2010
Développer  Scripts [534]
  Portions [76]
Algorithmes [2]
Authentification [3]
Chaines de caractères [7]
Dates / Heures [9]
Divers / Inclassables [3]
Fichiers / Répertoires [10]
Formulaire [2]
HTML [2]
HTTP [3]
Images / GD [7]
Mail [2]
Maths [3]
MySQL [4]
Oracle [1]
Regex [13]
Suivi technique [1]
Upload [4]

Développer  Articles [112]
 
Rechercher
 
 
Espace membres
Se connecter 
Devenir membre 
 
La communauté PHP
News/Jobs/ApéroPHP 
 
 
Le coin des développeurs
La tribune 
Le chat / Les forums 
Ajouter une ressource 
Proposer une MAJ 
 
Divers
Faire un lien 
Backends/Modules 
Sites partenaires 
Remerciements 
Accueil | Forum | Livre d'Or | E-mail PHPScripts - Copyright © 2000/2010 - Tous droits réservés - Laurent Adda