[PHP] Nouveau BBCode et protection des adresses e-mail
Par -Alexandre LEGOUT aka LAlex- le mardi, novembre 25 2003, 14:00 - AS2 - Lien permanent
Aprés avoir reçu un bon paquet de mails "viagra-grospenis-sitedecul" à une adresse que je ne communique jamais, je me suis posé la question des adresses mails qui sont visibles sur certains sites, comme les blogs (y compris le mien) et les sites communautaires. :?
J'ai donc développé un petit script PHP qui va "encoder" les adresses e-mails, puis les envoyer a une fonction javascript qui va s'occuper de les décoder. Ainsi, l'adresse email n'apparaît jamais en clair dans le code source de la page, qui est utilisé par les "aspirateurs d'emails". 8|
L'avantage de ce script est que l'encodage est différent à chaque affichage de la page, ce qui fait qu'il est plus difficile de la récupérer en créant un fonction "en dur". Vous pouvez choisir vous même une liste de valeurs qui vont pouvoir remplacer le symbole '@', et une de ces valeurs sera prise au hasard pour chaque page.
En plus, le fait de les décoder pour les afficher avec javascript permet à l'internaute de ne pas être géné, puisqu'il voit exactement la même chose que d'habitude.
Cryptmail fonctionne sur Internet Explorer 6 et sur Firebird (donc sur Mozilla). N'ayant pas de Mac, je ne sais pas s'il fonctionne sur Safari ? 8O Etant du Javascript 1.2, je pense que ca devrait passer. Si certains visiteurs ont un navigateur "exotique" (moins fréquent on va dire :)) ce serait sympa de me dire si les adresses sont visibles correctement (le script tourne deja sur ce blog)! ![]()
J'ai intégré ce script à mon parseur BBCode, et j'en ai profité ajouter des fonctionnalités comme la gestion des smileys intégrée au moteur, ce qui me permet également de ne pas afficher de smileys dans les tags de type "norender" (code et autres...). Et tant qu'à faire, j'ai supprimé quelques bugs (affichage des chaines "ressemblant" à une variable PHP comme $var, affichage des antislashs : \ , etc...) ![]()
::Télécharger bbcode02.zip (avec cryptmail)::
Commentaires
Je te confirme que les adresses email sur ton site sont bien visibles sur Safari.
Merci beaucoup laurent !
Cool, bonne initiative! La je suis au boulot avec IE5.0 (exotique? ;)) et je ne vois pas les emails. Voila le message que j'ai:
Je testerai de chez moi ce soir avec Konqueror.
timoth' >> Euh ... IE5, pas vraiment exotique, mais plutôt vieux ... 8|
Mais merci pour l'info !
Pour konkeror, étant donné que c'est le même moteur que Safari, ca devrait marcher je pense ... 
En fait, c'est du javascript 1.2, et je suis pas sûr que IE5 le gère ... :?
IE5.0 supporte bien JavaScript 1.2 et RegExp depuis IE4.0. Je viens de jeter un coup d'oeil a ton code et c'est le point d'interrogation que IE aime pas: en gros:
// ton code, marche pas sous IE5.0var reg = new RegExp('(.*?)(~nospam~)(.*)','g'); // <- le '?'
// marche bien sous IE5.0
var reg = new RegExp('(.*)(~nospam~)(.*)','g');
Mais d'ailleurs est-ce que '(.*?)' est vraiment valide en regexp? Normallement
. -> any character
* -> 0 to n instance
? -> 0 or 1 instance
J'ai jamais trop fait de regexp alors je prefere pas trop m'avancer mais ca me semble louche :p.
Sinon, ouaip, tu as raison IE5.0 est un peu vieux, mais j'ai quand meme 2.2% de mes visiteurs qui l'utilisent. Arf, non-negligeable ;). En plus, moi je n'utilise que ca au bureau et je veux continuer a voir ton blog! Pliiizeuh, fait un chtit fixe.
Timoth'
Vi, je vais voir ce que je peux faire !!!
En fait, normalement le (.*?) limite la gourmandise... En fait, normalement, si je fais En effet, le quantifieur * est gourmand par défaut. :? Pour éviter ca, on peut utiliser
J'en fait un trés grand usage dans mon parseur BBCode, et j'en ai pris l'habitude ... :o Mais j'ai galéré pour le trouver. Peut-être qu'il n'est pas implémenté dans les regExp de IE5 ?
D'ailleurs, existe-t-il des "versions" des regexp PERL ? 8|
'oila !
C'est réparé normalement ... 
Bon, je mets à jour les fichiers à télécharger
Niquel, ca marche pile-poil maintenant, merci :)!! Et merci aussi pour l'info, je connaissais pas ce "super-quantifier": *?:)
Tient, vu qu'on es dans les customizations de ton moteur, dans les feature requests, est-ce que c'est possible d'avoir une checkboxe: "M'envoyer un email quand un reply est fait dans ce thread"?
Aller... Pour Noel ;):D????
Oui, j'y ai pensé, ainsi que le preview pour les commentaires ... Mais j'arrive pas à m'y mettre ...
Ca va viendre, ca va viendre !!!
Je vote pour aussi

PS : bientot ton blog devient un forum
moi je voterai bien pour que les commentaires n'apparaissent plus en pop-up ... Enfin c'est toi qui decide, c'est toi le maestro
T'as raison petepx ... En fait, c'était pour ceux qui voulaient parcourir les commentaires de quelques derniers posts sans forcément "rentrer" dans le post ... :roll:
Mais de toutes facons, je vais rajouter 2-3 tips (genre un petit lien [pop] pour ceux qui veulent ouvrir en pop-up), le lien direct pour ceux qui veulent faire un lien sur un post précis, etc ...
Je vais aussi rajouter comme tu l'as fait une liste des derniers commentaires : c'est bien pratique ca !!!
Bien mieux le lien pour lire le POST... plus simple pour donner l'url du message sans avoir à dire la date (Cf : quand je dis à un membre du forum de venir voir sur ton blog ;))
bye
Bonjour,
Le module proposé a l'air bien sympathique mais je n'arrive pas à le mettre en oeuvre (je ne suis pas du tout dans le milieu informatique mais en général j'arrive à utiliser des lignes de code proposées par ci par là). Mais là, rien à faire.
Les instructions suivantes font planter ma page :
<?php
require_once "../nomdudossier/bbcode.php";
getBBTags ('../nomdudossier/bbcode.xml');
?>
Et quand j'essaie le sample fourni, il ne fonctionne pas : je vois bien le formulaire mais rien ne se passe quand je submit.
Y aurait-il qqchose qui me dépasse ?
Fil des commentaires de ce billet