begin process at 2012 05 27 20:02:39
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

E-Mail / Messagerie

 > ENCODEUR D'ADRESSES EMAILS

ENCODEUR D'ADRESSES EMAILS


 Information sur la source

Note :
8 / 10 - par 3 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :E-Mail / Messagerie Classé sous :codeur, codé, crypté, cryptage, mail Niveau :Débutant Date de création :21/08/2010 Date de mise à jour :21/08/2010 09:47:59 Vu :3 074

Auteur : Boris090

Ecrire un message privé
Site perso
Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

 Description

On trouve pas mal de sites qui proposent d'encoder des adresses email pour vous, pour pouvoir faire des liens "mailto" sans que ça passe directement dans le 1er robot venu.

Le "problème" est qu'il n'y a que l'interface, jamais le code qui permet d'encoder l'adresse. Comme j'en avait marre de devoir faire des copier-coller adresse par adresse, j'ai fait ma propre fonction d'encodage, et quitte à faire, autant en faire profiter tout le monde.

Celle-ci est basée sur l'encodage de caractère en décimal et hexadécimal. Pour chaque caractère de l'adresse email, la fonction le code soit en hexa, soit en décimal, soit ne le code pas. Ainsi, on obtient un email avec un codage totalement aléatoire. Comme il n'y a plus de logique directe, cela permet de compliquer fortement la tâche aux robots.

Je me doute bien que certains robots réussiront quand même à passer au travers, mais c'est une des solutions les plus efficaces que j'aie trouvé jusqu'à maintenant (en dehors de passer par un formulaire + captcha, mais ça n'est pas la question ici).

A noter que le mail codé peut être utilisé aussi bien pour le lien mailto que pour l'affichage même de l'adresse email.

Source

  • function encode_mail($email) {
  • $mail_encoded = "";
  • for($i = 0; $i < strlen($email); $i++) {
  • $alea = rand(1, 300);
  • switch(($alea % 3)) {
  • case 0:
  • $mail_encoded .= "&#".ord($email[$i]).";";
  • break;
  • case 1:
  • $mail_encoded .= "&#x".bin2hex($email[$i]).";";
  • break;
  • case 2:
  • $mail_encoded .= $email[$i];
  • break;
  • default:
  • echo "Error";
  • break;
  • }
  • }
  • return $mail_encoded;
  • }
  • // Exemple d'utilisation :
  • echo "<a href=\"mailto:".encode_mail($mail)."\">".encode_mail($mail)."</a>";
  • // Version alternative permettant plus d'aléatoire avec l'ajout des caractères codés en ASCII (notation utilisée pour les URL), mais incompatible pour l'affichage.
  • function encode_mail2($email) {
  • $mail_encoded = "";
  • for($i = 0; $i < strlen($email); $i++) {
  • $alea = rand(1, 400);
  • switch(($alea % 4)) {
  • case 0:
  • $mail_encoded .= "&#".ord($email[$i]).";";
  • break;
  • case 1:
  • $mail_encoded .= "&#x".bin2hex($email[$i]).";";
  • break;
  • case 2:
  • $mail_encoded .= "%".bin2hex($email[$i])."";
  • break;
  • case 3:
  • $mail_encoded .= $email[$i];
  • break;
  • default:
  • echo "Error";
  • break;
  • }
  • }
  • return $mail_encoded;
  • }
function encode_mail($email) {
    $mail_encoded = "";
    for($i = 0; $i < strlen($email); $i++) {
        $alea = rand(1, 300);
        switch(($alea % 3)) {
            case 0:
                $mail_encoded .= "&#".ord($email[$i]).";";
                break;
            case 1:
                $mail_encoded .= "&#x".bin2hex($email[$i]).";";
                break;
            case 2:
                $mail_encoded .= $email[$i];
                break;
            default:
                echo "Error";
                break;
        }
    }
    return $mail_encoded;
}


// Exemple d'utilisation :
echo "<a href=\"mailto:".encode_mail($mail)."\">".encode_mail($mail)."</a>";


// Version alternative permettant plus d'aléatoire avec l'ajout des caractères codés en ASCII (notation utilisée pour les URL), mais incompatible pour l'affichage.
function encode_mail2($email) {
    $mail_encoded = "";
    for($i = 0; $i < strlen($email); $i++) {
        $alea = rand(1, 400);
        switch(($alea % 4)) {
            case 0:
                $mail_encoded .= "&#".ord($email[$i]).";";
                break;
            case 1:
                $mail_encoded .= "&#x".bin2hex($email[$i]).";";
                break;
            case 2:
                $mail_encoded .= "%".bin2hex($email[$i])."";
                break;
            case 3:
                $mail_encoded .= $email[$i];
                break;
            default:
                echo "Error";
                break;
        }
    }
    return $mail_encoded;
}


 Conclusion

Je suis bien sûr ouvert à toute critique/suggestion (tant que cela reste constructif, cela va de soi).

Profitez-en bien! :-)


 Historique

21 août 2010 09:47:59 :
Ajout d'une version alternative, un peu plus fiable (car plus aléatoire), mais ne permettant pas l'affichage de l'email.

 Sources du même auteur

Source avec Zip SQLAL : CLASSE SQL POUR MYSQL, MYSQLI, SQLITE, SQL SERVER, E...

 Sources de la même categorie

Source avec Zip Source avec une capture FORM TO MAIL AVEC PROTECTION PAR TOKEN ET CAPTCHA CONTRÔLES ... par cod57
Source avec Zip Source avec une capture FORMULAIRE VERS COURRIEL BASIQUE AVEC CONTRÔLE CAPTCHA ANTI ... par cod57
Source avec Zip CHAT EN PHP ET JQUERY par pitchoubrazil
Source avec Zip Source avec une capture FORMULAIRE DE CHOIX MULTI-CONTACT VALIDE XHTML 1.0 TRANSITIO... par aventurier19
Source avec Zip Source avec une capture WEB MESSENGER par EvildarkEurope

 Sources en rapport avec celle ci

CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC... par 8Tnerolf8
Source avec Zip Source avec une capture SIMPLE EMAILING SERVICE par mtrix000
Source avec Zip CRYPTAGE REVERSIBLE par Mokost
Source avec Zip Source avec une capture CREATION DE COMPTE AVEC CRYPTAGE ET ESPACE DE CONNEXION SEC... par bm1982
Source avec une capture CRÉER UNE IMAGE POUR AFFICHER LES EMAIL ET EMPECHER LE SPAM par punkcity

Commentaires et avis

Commentaire de Equilibrius le 23/08/2010 04:23:37 7/10

Salut, très intéressante cette méthode, surtout pour le cas où on veut afficher le mail en question, par contre je trouve qu'on peut faire le cheminement inverse un peu trop facilement :

<?php
$mail = 'adresse@mail.com';
if (html_entity_decode(encode_mail($mail)) == $mail) echo "ok";

Pour ma part, j'aurais plutôt utilisé du Javascript, même si vous allez me dire que "ee oui, et si le visiteur ne la pas activé ?"
Actuellement pour essayer de protéger un minimum les mails j'utilise ce bout de code :

<?php
echo "<a href=\"javascript:location.href='mailto:'+'".strrev($mail)."'.split('').reverse().join('')\">eMail</a>";

Quelqu'un aurait les sources de ces bots snifeur de mail ? lol je serais curieux de savoir comment ils fonctionnent (mm si mon petit doigt me cri REGEX !!) et si ils sont évolué..

Cordialement

Commentaire de patrickbangkok le 31/08/2010 18:07:12

Bjr.
Je ne comprend pas ce que ton script encode.
(je suis debutant et en train de creer un site)
S'agit-il de coder"mailto' ?
De coder l'adresse Email liee ?

Ce que je recherche : coder l'adresse mail liee sur une icone ou sur un texte.
Merci de tes lumieres.

Commentaire de Equilibrius le 31/08/2010 18:17:45

Dans les 2 sources précédentes, c'est le mail qui est "encodé", pour le rendre moins facilement accessible aux méchants robots spammer.

Qu'est-ce que tu ne comprends pas exactement (quel portion du code) ?

Commentaire de Boris090 le 01/09/2010 00:03:18

Si j'ai bien compris, tu souhaites utiliser une image pour faire un lien mailto.

Si oui, alors tu peux faire comme cela :

echo "<a href=\"mailto:".encode_mail($mail)."\"><img src=\"monimage.jpg\" alt=\"Envoyer un email\" /></a>";

Commentaire de patrickbangkok le 01/09/2010 06:34:46

Tout d'abord merci pour ta reponse.
En fait je pensais que des robots pouvaient recuperer les adresses Email contenues dans la source des sites.
Le codage de l'adresse elle-meme (contenue soit sous une image, soit sous un mot) empecherait cela.
L'adresse serait codee pour le stockage et uniquement decodee lors de l'envoi.
Je me fourvoie peut etre...
A Boris090 : Merci pour la ligne de code. Ton site est tres bien. Sur celui que je suis en train de creer, il faut que je mette un access securise sur au moins 1 page (membre) laissant l'access libre aux autres. L'alternative est de faire comme toi. Creer un bloc flottant comme mon menu, contenant la demande d'access...
Merci a vous deux  

Commentaire de Boris090 le 01/09/2010 11:15:10

"En fait je pensais que des robots pouvaient recuperer les adresses Email contenues dans la source des sites."

Oui, effectivement, et c'est justement pour cela que j'ai fait cette fonction!

Avec cette fonction, une adresse email, dans le code source, ça ressemble à ça (exemple avec l'adresse email de ma société : contact arobase e-concept-applications.fr) :
&#x63;on&#116;&#97;&#99;&#116;&#x40;&#101;-&#x63;&#x6f;n&#x63;&#101;&#112;t&#45;appl&#105;&#99;&#97;&#116;&#105;&#x6f;&#110;s&#46;&#102;&#114;

Et ça, un robot va avoir beaucoup plus de mal à le reconnaitre.

Sinon, dans une image, oui, c'est plus difficile, mais à moins que l'image soit particulièrement déformée, comme dans les captcha, la plupart des robots sauront lire ton adresse.

Commentaire de patrickbangkok le 01/09/2010 18:19:43

Donc ton code correspond a ce que je veux faire (comme beaucoup, je pense).
J'ai developpe notre site avec DreamWeaver en html.
Comment inclure ta procedure dans ce html, entre quels tags ?
Dois-je l'encadrer de balises <script> ?

Cette ligne doit-elle etre ajoutee, si oui ou ?
echo "<a href=\"mailto:".encode_mail($mail)."\"><img src=\"monimage.jpg\" alt=\"Envoyer un email\" /></a>";

Pardonnes moi ces questions et mon ignorance de neophyte.
Je t'en remercie.
Patrick

Commentaire de Boris090 le 01/09/2010 21:59:27

Ici, c'est phpcs, donc, comme le nom du site l'indique, c'est du php.
Donc ca ne se met pas dans des balises <script>, mais dans un fichier php qui affichera ta page.

Donc, comment procéder ?
1) Tu vérifie que ton hébergement gère bien le php
2) Tu renommes ton fichier .html en .php
3) Là ou tu veux mettre ton image avec le lien dessus, tu insère cela :
<?php
// Le code complet de la fonction à la place de cette ligne

echo "<a href=\"mailto:".encode_mail($mail)."\"><img src=\"monimage.jpg\" alt=\"Envoyer un email\" /></a>";
?>

Et bien sûr, tu remplace "monimage.jpg" par la bonne image.

Commentaire de patrickbangkok le 02/09/2010 05:42:38

Oups !!! PHPcs...
Je n'y avais pas prete attention. Sorry.
Merci Boris090 pour cette reponse claire.
Le site que je mets au point est encore sur mon PC. Lorsqu'il sera pret je ferais deja tous les tests. Je n'ai pas encore choisi d'hebergeur mais pense que tous gerent le PHP.
Je croyais aussi qu'il etait possible d'inserer une sous-routine PHP dans du html comme on faisait autrefois dans un programme COBOL appelant un module assembleur par ex.

Es-tu un pro du developpement pour avoir une telle connaissance, en plus d'etre un excellent photographe ?
Cordialement.
Patrick Bangkok

Commentaire de Boris090 le 02/09/2010 08:40:54

"Es-tu un pro du developpement pour avoir une telle connaissance"
==> "Une telle connaissance" est un bien grand mot. Ca reste les bases du PHP, mais effectivement, si tu ne t'es jamais plongé dedans, il n'y a rien d'anormal à ce que tu ne le connaisse pas.

Pour le "noyer du php dans le html", tel que je te l'ai présenté, c'est le cas. L'extension .php du fichier indique au serveur web qu'il y a du php dedans (mais il comprend également le html, pas d'inquiétude).
Ensuite, les tags <?php et ?> indiquent le début et la fin du code php. Tout ce qui se trouve en dehors de ces tags sera considéré comme du html normal.

Mais sinon, indépendamment de cela, oui, développeur, c'est mon métier. :)

"en plus d'etre un excellent photographe"
==> C'est encore une fois un bien grand mot. De nombreux photographes font bien mieux que moi. Mais c'est là tout l'intérêt d'une passion : On fait, on se fait plaisir, et on améliore chaque jour! ;-)

Commentaire de patrickbangkok le 14/09/2010 19:37:24 8/10

A Boris090.
Voila depuis je me suis plonge dans le PHP, langage tres riche et puissant.
Le site que je prepare n'est donc pas encore en ligne... J'ai encore pas mal de redactionnel a ecrire pour garnir toutes les pages.
J'ai eu un peu de mal a parametrer Dreamweawer et WAMP en local, mais tout le site sera en XHTML et PHP comme tu me l'as conseille.   Merci.

La difficulte du moment est le controle du formulaire par Javascript chez le visiteur, puis par PHP sur le serveur.
Je recherche des codes pour me mettre sur le chemin, pas facile d'en trouver des fonctionnels.

J'insiste : belles photos !

Commentaire de firgon le 25/10/2011 07:29:58

Bonjour,

Ce script serait exactement ce que je recherche, en revanche, je ne comprends pas comment le lien peut fonctionner une fois le mail encodé. Ou est la fonction de décodage pour que quand je clique sur le lien, j'ai une adresse correcte qui s'affiche dans mon outlook afin de pouvoir envoyer le mail?

Commentaire de Boris090 le 25/10/2011 08:03:22

Il n'y a pas de fonction de décodage. C'est automatique.
Pour l'encodage des caractères en "&#quelquechose", c'est le navigateur qui fait la conversion du caractère automatiquement (notation standard html des caractères spéciaux UTF-8), et pour les caractères encodés en "%xx", c'est le codage au format ISO défini pour les URL, donc n'importe quel logiciel conforme aux standards établis est capable de lire une telle adresse.
Fait un essai avec ce code dans une page web :
echo "<a href=\"mailto:".encode_mail2($mail)."\">".encode_mail($mail)."</a>";
Et compare le code html généré, ce que ça t'affiche, et ce que ça fait quand tu cliques sur le lien. Ca sera beaucoup plus parlant. ;-)

Juste pour rappel, la 1ère version de la fonction peut servir aussi bien pour l'affichage que pour mettre dans un champ URL (comme <a href="url">), mais la 2nde ne sert que pour les URL. A l'affichage, la 2nde affichera certains des caractères sous forme de code %xx.

Commentaire de firgon le 26/10/2011 15:25:50

Bonjour,

Je ne sais pas si mon commentaire à été modéré ou si j'ai buggué, mais je me demandais à quel point ce codage pouvait être efficace, s'il respecte les notation standard html, est-ce que les bots ne vont pas justement être capable de lire une telle adresse ?

Merci d'avance.

Sinon si ça marche c'est un super petit code que je me suis empressé de récupérer.

A bientôt.

Commentaire de Boris090 le 26/10/2011 15:37:22

Aucune solution n'est fiable à 100%, et oui, c'est décodable.
Ici, on joue essentiellement sur la notion d'aléatoire, et aussi sur le fait que pour décoder un système comme celui-là, cela demande beaucoup plus de lignes de code, et demande également plus de temps. Du coup, moins d'intérêt pour les hackers & cie.

Mais tout comme les captcha images, il y aura toujours des pirates qui parviendront à passer la barrière  plus ou moins facilement. Cela dit, c'est mieux que rien, et ça présente deux avantages :
- Pas d'image, pas de truc à moitié lisible, etc.
- 100% compliant html et xhtml. ;-)

C'est avant tout un compromis entre fiabilité et accessibilité, aussi bien pour le développeur que pour le visiteur. ;-)

Commentaire de firgon le 26/10/2011 15:39:13 9/10

Oui, oui, je suis parfaitement dans cette approche !

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

*PHP* Cryptage adresse mail ! [ par masterfree ] Bonjour &#224; tous,Avant, j'avais un site en Html; maintenant, je fais le m&#234;me en PHP.Je crypte mes mails en JS (Html). J'ai vu plusieurs exempl Fonction mail! [ par jnbrunet ] Salut,Comment fait-on pour activer la fonction mail sur easyphp?? Le code sur mon serveur payant marche tr&#232;s bien...mais sur easyphp ca ne marche fonction mail et messagerie hotmail [ par attentio ] bonjour,la seule solution que j'ai trouver pour envoyer des mails a un utilisateur hotmail sans se retrouver dans son "courrier indesirable"est de met comment insérer une pièce jointe dans l'envoi d'un mail ? [ par arnold002 ] Bonjour &#224; tous,J'utilise un formulaire sur ma page form.php. Les donn&#233;es sont transmises &#224; ma 2&#232;me page mail.php, qui contient le fonction mail [ par refkaben ] salut tous le monde!j'ai un formulaire d'inscription, si un membre vient de s'inscrire on lui envoi un mail lui demandant de me contacter, voila le co Paramètre de la fonction mail sous free [ par cz1702 ] Bonjour , je cherche &#224; envoyer un mail au format html sous free pour cela j'utilise la fonction mail de cette mani&#232;re : mail( "$destinataire php: fonction mail(), compatibilité yahoo, hotmail et autres [ par cguibs82 ] Bonjour, Je sais que plusieurs post parlent du m&#234;me sujet. mais je n'arrive pas &#224; le faire fonctionner.je b&#226;tis un newsletter. le probl php.ini de freebsd pour fonction mail() [ par kilomaster ] Bonjour tous le monde, Je voudrais savoir si quelqu'un sait comment configurer le php.ini de freebsd (linux), de mani&#232;re &#224; pouvoir utiliser Fichier crypté mais rien ne s'affiche [ par Rimb0 ] Bonjour &#224; tous ! J'ai &#233;crit rapidement ce script : &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/ mail et php [ par coucoucircus ] Bonjour &#224; tous, J'utilise un formulaire et une page php pour envoyer un mail, et tout fonctionne correctement... Sauf... Quand je re&#231;ois le


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales