fonction pour proteger un email contre le spam (basique)

Mammouth du PHP | 1511 Messages

12 nov. 2006, 02:48

Observant divers méthode consistant a repérer les adresses email dans les pages, j'en suis venu a une conclusion, il faut cacher les éléments tel que le "." et le "@".
Donc j'ai codé cette fonction a adapter a vos besoin en modifiant le chemin des images.
function protect_mail($mail)
{
	$mail = str_replace('.', '<img src="design/images/divers/point.png" alt="" />', $mail);
	$mail = str_replace('@', '<img src="design/images/divers/arobaz.png" alt="" />', $mail);
	return $mail;
}
Bonne soirée

ViPHP
ViPHP | 1961 Messages

12 nov. 2006, 03:07

Bonsoir,

Le principe du découpage est bon. Remplacer les caractères je ne suis pas sur.

Si tu as un mail (tout à fait valide) du style [email protected] le premier point rique de poser problème, de plus si tu stockes tes mails dans une base de données comment tu vas faire???

Les champs ne sont pas du même type pour les images que pour les caractères.

Tu ne pouras pas échaper aux logiciels qui lisent les touches au clavier (je me souviens plus de leur nom).

Et il-y-a d'autres inconvénients.

Je pense que la meilleure solution est de découper (des la saisie) le mail en 3 parties (proposer 3 champs de saisie et utiliser les images dans la page pour donner la structure).
1 - user (partie avant @)
2 - dom (le domaine entre @ et le .)
3 - tld (Top Level Domain - com - fr - eu -etc)
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 1511 Messages

12 nov. 2006, 03:15

Il n'y a que lors de l'affichage qu'il faut utiliser cette fonction, j'avais oublié de le préciser :)
@+

Mammouth du PHP | 19672 Messages

12 nov. 2006, 10:21

Ça vaut ce que ça vaut, mais pour ma part, j'ai résolu ce problème de façons beaucoup plus tranchée : je mets un lien vers une page d'envoi de message contenant un formulaire et je n'affiche plus aucune adresse de courriel, que ce soit en clair ou déguisée. L'adresse est inaccessible puyisque dans une variable PHP et traitée uniquement coté PHP, jamais coté client. Les robots spammeurs en seront pour leurs frais et je ne me soucie plus de l'avancée technologique des futés pour décoder les adresses maquillées.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

12 nov. 2006, 12:08

itou :pouce:

Mammouth du PHP | 1511 Messages

12 nov. 2006, 13:45

Perso, c'est plus pour proteger les adresses msn, jabber et autres dans l'affichage du profil.
Mais bon :)
En tout cas, les utilisateurs sont libres de ne pas les communiquer en sélectionnant "ne pas afficher mon email" dans leur profil.

Mammouth du PHP | 19672 Messages

12 nov. 2006, 13:50

L'internaute lambda ne sait en général pas et surtout ne connait pas tous les vices de l'internet, quant à imaginer que des robots récupèrent des adresses pour les pourrir par la suite, ce n'est pas une notion très évidente non plus. C'est pour ça que je fais en sorte que l'internaute n'ait pas à se poser de question. S'il veut diffuser son adresse, libre à lui, mais ça se fera pas sur les sites que je construis et je n'aurai strictement rien à me reprocher quand il commencera à est harcelé de spams tentant de lui vendre des pillules bleues, des gadgets en tous genres et des placements financiers douteux. :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 2937 Messages

13 nov. 2006, 11:59

Salut!

Un robot spammeur est-il capable de déchiffrer une adresse affichée dans le code source comme suit (sans aucun lien hypertexte)? :-k

Code : Tout sélectionner

<p>Adresse&nbsp;: mail*at*domaine.com</p>

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

13 nov. 2006, 12:11

Nul ne peut connaître l'inventaire exhaustif des robots
et leurs compétences respectives en matière de décryptage d'adresse e-mails.

Cependant, pose-toi la question suivante : est-il difficile de créer un script
qui identifie ce genre de chaine comme étant une adresse e-mail
et qui la traduit dans le format valide ?

Si tu peux le faire, alors quelqu'un d'autre a pu le faire pour un robot...

Mammouth du PHP | 2937 Messages

13 nov. 2006, 12:27

Salut!

Comme ça le script? :mrgreen:
<?php 
$courriel='mail*at*domaine.com';
if (preg_match("/^([-_.0-9a-z]+)@([-_.0-9a-z]+)\.([a-z]{2,})$/", $courriel)){
  echo 'Chouette&nbsp;! on va "spammer"&nbsp;! :twisted: ';
}
else{
  echo 'Mince&nbsp;!';
}
?>

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

13 nov. 2006, 13:10

Si je devais faire un script de détection des adresses dans une pages, ce serait une expression de ce style : #([a-zA-Z0-9_\-]){3,}.{0,5}*(?:at|@|a).{0,5}*(?:\.|dot|point).{0,5}*([a-zA-Z0-9_\-]){2,}# non testée, probablement buggée, mais vous voyez l'esprit. Tant qu'on "camoufle" en jouant sur les séparateurs je pense que ça ne vaut que très moyennement (les robots "basiques").

La seule méthode vraiment efficace est celle basée sur Javascript : ça se décode très bien, mais c'est bien plus coûteux en terme de ressources (temps, surtout) et un robot ramasseur de mails, son principal intérêt c'est d'être rapide pour amener une bibliothèque énorme de mails le plus vite possible.

Jusqu'au jour où...

Donc +1 pour cyrano : du moment où une adresse e-mail est affichée de quelque manière que ce soit, elle est vulnérable. Personnellement je remplacerais les emails par des images pour être vraiment peinard ;)

D'ailleurs, un site web proposant un service simple de ce genre pourrait être sympa :
- on choisit un texte, une police, une couleur de texte, une couleur de fond.
- il génère une image présentant ce texte (et rien d'autre) disponible à une adresse "à la tinyurl".

Et voilà comment mettre son adresse mail dans les forums sans craindre le spam (pas besoin non plus d'aller captcha-iser l'image, les robots-spammeurs-OCR ne sont pas encore près d'arriver il faut être réaliste quand-même).