| Mail
brouille e-mail par Xavier LARQUET |
[0] | |  |
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) %8 ) + 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.
|
|
 |
|