Anti SPAM : crypter une adresse email sur un site web HTML

WRInaute passionné
Bonjour
Quels sont les solutions pour cripter une adresse email sur un site web en HTML ?

Y a t-il un petit Javascript ou autre pour cela?

Merci pour les solutions.
 
WRInaute accro
http://aspirine.org/emailcode.php

ou en PHP:

Code:
function encodeEmail($email, $name = null) {

	$email = preg_replace("/\"/","\\\"",$email);

    if($name == null)
           $name = $email;

	$old = "document.write('<a href=\"mailto:$email\">$name</a>')";

	$output = "";

	for ($i=0; $i < strlen($old); $i++) {
	 $output = $output . '%' . bin2hex(substr($old,$i,1));
	 }

	$output = '<script type="text/javascript">eval(unescape(\''.$output.'\'))</script>';
	$output .= '<noscript><div>Il faut javascript activé pour voir l\'email</div></noscript>';
	return $output;
}
 
WRInaute impliqué
Moi j'ai l'habitude d'engluer l'email dans un petit Flash.
C'est moins sophistiqué, les visiteurs sans flash ne peuvent la voir, mais c'est une technique comme une autre...
 
WRInaute discret
Outre le formulaire qui permet de cacher l'email, il y a aussi une fonction javascript très simple, et qui marche très bien en ce qui me concerne.

dans la partie head de votre page collez (et adaptez) le bout de code suivant :
Code:
<script type="text/javascript">
	function mail(str){
		window.location.href="mailto:" + str + "@" + "mon-domaine.com";
	}
</script>
Vous remplacez bien sûr mon-domaine.com par votre domaine...
Ensuite dans votre code html, pour faire apparaitre un lien mailto :
<a href="javascript:mail('webmaster')">nous contacter</a>

Pour l'exemple ci-dessus, le lien "nous contacter" renvoie vers l'email webmaster@mon-domaine.com.
Ainsi l'email n'apparait pas en clair dans la source.
 
WRInaute passionné
Une solution simple mais efficace en PHP :

Code:
/* Encodage d'email pour contrer le spam */
// Transforme les caractères de l'email en équivalent ASCII dans le code source
function emailEncode($email) {
	$email_encode = '';
	$nb_caractere = strlen($email);
	for		($a = 0; $a < $nb_caractere; $a ++) {
			$ord = ord(substr($email, $a, 1) );
			$email_encode .= '&#'.$ord.';';
			}
	return $email_encode;
}
 
Discussions similaires
Haut