Affichage d'une adresse mail, solution anti-spam tout en php

Petit nouveau ! | 2 Messages

16 janv. 2007, 17:04

Bonjour,

Je cherche depuis quelques jours une solution développée uniquement HMTL/PHP (En gros sans JS) qui me permettrait d'afficher des adresses mails (récupéré dans une DB) dans une page mais qui empêcherait les robots de recherche d'adresse de récupérer ces adresses.

Et le tout avec des balises mailto et pas des formulaires d'envoie de mail.

Voilà, si quelqu'un pouvait m’aider, une piste de recherche ou n’importe quoi….

Merci à vous

Eléphant du PHP | 259 Messages

16 janv. 2007, 17:48

hello,

te dire que c'est completement impossible, ca te rend service ? ;)

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

16 janv. 2007, 17:55

Comme le dit Jules, c'est impossible. Si un navigateur sait qu'un lien est une adresse email alors un robot le saura aussi. Néanmoins, tu peux toujours essayer de leur rendre la tâche le plus difficile possible. Regarde du côté de ce topic, c'est à peu près le mieux que tu pourras obtenir.

Edit: En y réfléchissant, on doit pouvoir leur compliquer encore un peu la tâche en ajoutant des caractères invisibles au milieu de l'adresse, par exemple pour l'adresse [email protected]

Code : Tout sélectionner

john.<span style="display:none">lol</span>[email protected]

ViPHP
ViPHP | 4674 Messages

16 janv. 2007, 20:44

Bonsoir,

en revanche pour les personnes utilisant des navigateurs texte (je pense évidement à lynx en premier), mais aussi pour d'autre navigateur/programme pour "handicapés", qui ne supporte pas CSS, on va voir un "lol" placé en plein au milieu de l'adresse :P ca va être très malin ...

donc on oublie cette hypothèse tout de suite :P sinon jvais me fâcher tout rouge ^^
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

16 janv. 2007, 21:18

Au pire, je conseillerais d'utiliser quelque chose d'évident comme ".retirezmoi." mais je doute que beaucoup d'utilisateurs de lynx visitent le site d'Orbi. Quant aux navigateurs pour malvoyants, à ma connaissance ils sont sensés interpréter le CSS pour leur affichage, mais la dernière fois que j'ai voulu en installer un il a voulu modifier trop de choses dans mon système pour que je puisse le vérifier par moi-même. Si tu as des liens intéressants, ils sont les bienvenus.

Invité
Invité n'ayant pas de compte PHPfrance

16 janv. 2007, 23:49

je n'ai pas de lien hélas
mais c'est toujours mieux d'avoir un système fonctionnel dans le cas où l'on a ni javascript, ni css :)
enfin c'est mon avis :)

pour les liens, je peux demander sur alsacreations si vous voulez ?

ViPHP
ViPHP | 4674 Messages

17 janv. 2007, 12:33

niarf, désolé j'ai oublié de me loger
le message précédent est de moi :oops:
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Petit nouveau ! | 2 Messages

17 janv. 2007, 14:04

Merci à tous.

Je vais lâchement abandonner les pauvres navigateurs sans JS pour privilégier un affichage correcte des adresses et un peut de sécurité.

Est-ce que vous pensez que le lien que ma donnée Hubert Roksor offre une solution efficace au niveau des robots ?

Car l'adresse est juste coupée en deux par des balises HTLM, ce qui ne doit pas être dur à reconstitué non ?

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

17 janv. 2007, 14:19

Si tu sais ce que tu cherches alors non, rien de plus facile. Mais comme on disait plus haut il n'existe aucune solution parfaite.

La bonne nouvelle, c'est que les robots qui font ce genre de boulots sont généralement assez simples (c'est un hypothèse basée sur le peu que j'ai pu voir/constater) et ne vont pas jusqu'à interpréter le HTML. En fait, pour tout ce que je sais, je pense qu'ils se contentent de faire passer la page par une expression régulière de type /[\w\.]+@[\w\.].

Pour info, la solution que je propose dans l'autre thread se dégrade plutôt bien sans javascript dans la mesure où l'adresse reste lisible même si le lien ne pointe pas dessus.

@HyWaN: si tu peux trouver des références vers une vraie façon de tester ses pages pour les screenreaders alors volontiers, merci ;)

ViPHP
ViPHP | 4674 Messages

17 janv. 2007, 18:44

Bonjour,

il y a bien delorie pour voir un navigateur text.
Et sinon je vais me renseigner auprès d'Alsacréations avec plaisir :)

Mais sinon, pourquoi ne pas faire : nick_AT_domain_DOT_tdl ?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 1885 Messages

18 janv. 2007, 02:54

La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Mammouth du PHP | 2937 Messages

18 janv. 2007, 17:40

La règle CSS "display: none" est interprétée par la plupart des synthétiseurs vocaux. Voir à ce sujet cet article: même s'il traite du remplacement d'images, il n'en est pas moins intéressant.

Une autre solution idéale consiste à ne jamais afficher, même en simple texte sans lien, l'adresse électronique telle quelle. Mais, pour le contact, il faudra passer par le formulaire en PHP (tout en prenant garde aux injections d'en-tête), n'en déplaise à Orbi.

Quant au JavaScript, les robots l'ignorent. Donc la solution en JavaScript n'est pas l'idéal, à mon avis. :roll:

Quant à coder l'adresse en mail%40domaine.com, j'ignore si l'efficacité dans la lutte anti-spam est au rendez-vous.

La solution de Xenon_54 est une bonne idée également.

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

18 janv. 2007, 19:15

Note qu'on peut aussi utiliser &#code-ascii; pour remplacer un caractère. Cela peut être intéressant d'en jouer un peu, pour le coup ça reste totalement compatible, et ça pourra déjà dérouter les robots les moins performants.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

18 janv. 2007, 19:38

Une idée parmis tant d'autres, on pourrait imaginer d'utiliser un script qui recevrait l'adresse email plus ou moins chiffrée ou offusquée et qui en retour génèrerait le meta-tag (ou en-tête) Refresh vers le mailto: qui va bien. Par exemple (sauvegardez dans un nouveau fichier "test.php" puis affichez la page dans votre navigateur)
if (empty($_SERVER['QUERY_STRING']))
{
	die('<a href="test.php?' . urlencode(str_rot13('[email protected]?subject=TEST')) . '">click</a>');
}

header('Refresh: 0;url="mailto:' . urlencode(str_rot13($_SERVER['QUERY_STRING'])) . '"');

ViPHP
ViPHP | 3607 Messages

19 janv. 2007, 01:05

je trouve ton idée vraiment intéressante hubert !
je croit qu'il y a un petit soucis cependant, il faut intervertir url_encode et str_rot13 dans le header (je crois hein...)
voilà ce que j'ai fait en rajoutant deux petites fonctions pour le fun:
<?php
function cesar_crypt($str,$pas=12){
    $temp='';
    for($i=0;$i<strlen($str);$i++){
        $temp.=chr(ord($str{$i})+$pas);
    }
    return $temp;
}
function cesar_decrypt($str,$pas=12){
    $temp='';
    for($i=0;$i<strlen($str);$i++){
        $temp.=chr(ord($str{$i})-$pas);
    }
    return $temp;
}
if (empty($_SERVER['QUERY_STRING']))
{
    die('<a href="essai.php?' . urlencode(cesar_crypt('[email protected]?subject=TEST',34)) . '">click</a>');
}

header('Refresh: 0;url="mailto:' . cesar_decrypt(urldecode($_SERVER['QUERY_STRING']),34) . '"'); 
?>
après si on utilise mcrypt, ça peut devenir infaillible... (à mois que les robots se mettent à cliquer sur les liens :roll: )