On Feb 6, 2008 5:25 AM, cronet <[EMAIL PROTECTED]> wrote: > > Hi, > > > In the template engine smarty, there exists an protection which > encodes the address e.g. in hex chars. So the address isn't grabbable > by spam bots via source... > > is there something like an e-Mail Spam protection or do I need to > create a helper? >
Hex translation probably won't help against bots anymore. It's a trivial task to implement a bot that can translate hex. What I've been doing is translating email addresses as they're written to output like so: [EMAIL PROTECTED] -> <span class="Obfuscated">foo AT bar DOT net</span> Then, on the client side, I have some javascript that trawls through each page for these spans and rewrites them as proper links. I doubt there are any bots out there with a javascript engine, so this is probably pretty safe. If javascript is disabled, the address is still fairly understandable. Here's the version that doesn't require any extra libraries (pretty straightforward to convert this to work with, say, prototype, etc.): /** * from Simon Willison * * http://simon.incutio.com/archive/2004/05/26/addLoadEvent **/ function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { oldonload(); func(); } } } addLoadEvent(function() { var emails = document.getElementsByClassName('span', 'Obfuscated'); if (!emails) return; var title = ''; var search = [' AT ', ' DOT ']; var replace = ['@', '.']; var replaced_text = ''; for (var i = 0; i < emails.length; i++) { /* get the text node */ var text = emails[i].childNodes[0]; if (text) { /* search & replace text */ replaced_text = text.nodeValue; for (var j = 0; j < search.length; j++) { var reg_exp = new RegExp(search[j], 'g'); replaced_text = replaced_text.replace(reg_exp, replace[j]); } /* create anchor node */ var link = document.createElement('a'); link.setAttribute('title', title); link.setAttribute('href', 'mailto:' + replaced_text); /* create new text node and append to anchor */ var text_node = document.createTextNode(replaced_text); link.appendChild(text_node); /* swap in anchor for text */ emails[i].replaceChild(link, emails[i].childNodes[0]); } } }); Whether you do the server-side stuff as a helper or not i can't say because i haven't got there yet (still a Cake noob). --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Cake PHP" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---
