How to display an email address for users but hide from robot? Is there a simply way to do it using PHP, Javascript or Jquery?

可紊 提交于 2019-12-03 08:39:28

You can use the PHP imagestring() function to create an image.

<?php
// Create a 100*30 image
$im = imagecreate(120, 30);

// White background and blue text
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 255);

// Write the email address at the top left
imagestring($im, 5, 0, 0, 'test@test.com', $textcolor);

// Output the image
header('Content-type: image/png');

imagepng($im);
imagedestroy($im);
?>

There are many ways of doing this. We've had som luck obfuscating source via python/javascript. Another simpler favourite is the CSS unicode-bidi technique:

div.contact { unicode-bidi:bidi-override; direction: rtl; }
<div class="contact">moc.rab@oof</div>

Prints out:

foo@bar.com

You might want to look into reCAPTCHA Mailhide. It should be easy to use from PHP.

never write email addresses as text on webpages, NEVER!

and browser bots surely have JS enabled -_-

Obfuscation using trickiest possible HTML entities and urlencode, implemented in PHP: http://hcard.geekhood.net/encode/

Source: http://code.google.com/p/hcardvalidator/source/browse/trunk/encode/index.php

Another approach I use is:

<a href="mailto:me@myserver.removethis.com">
<script>[…] a.href = a.href.replace(/removethis\./,'');</script>

It's worth noting that both techniques give users perfectly accessible, clickable link.

you can try changing name@example.com to: "name at example dot com".

However, robots can easily account for this.

Otherwise, you could display a dynamic image of the email address if you are truly motivated.

It's not a perfect solution, but the Enkoder (http://hivelogic.com/enkoder) is quite useful for this. It uses Javascript to obfuscate the address.

Ok. So after a while, I've found this blog article on how to do this easily. http://techblog.tilllate.com/2008/07/20/ten-methods-to-obfuscate-e-mail-addresses-compared/ And how much impact does it do on spam receiving ..

I guess this could be complementary to the info given above .. Cheers!

Would this work as well??

Using something like this

<span>myaddress</span><span>@</span><span>mydomain.com</span>

This won't stand as a link, but would still be recognizable by the human eye on a page, and probably con't be parsed by a robot. Haven't checked it out, thou. You could probably insert that string into a void and bind it to a function that composes the address by parsing out the content ..

Just a fast thought ...

This is difficult to do. Unless you use an image, anything which is rendered human-readable by your browser can be rendered human-readable by a robot. So even scrambling the e-email in some way in the HTML source and then using a javascript function to de-scramble dynamically on page rendering, this will be defeated by a robot which also does full rendering of the DOM.

Until recently I had good success with the above method, and didn't see any spam. Recently however I have noticed that addresses do seem to have been picked up. So I can only assume e-mail trawlers are now doing full DOM rendering.

So to conclude - an image is probably best (although even that is not 100%)

Here is a simple jquery solution to this problem:

<script type="text/javascript">
$(document).ready(function() {
    str1="mailto:";
    str2="info";
    str3="@test.com";
    $("#email_a").attr("href", str1+str2+str3);

});
</script>

<a href="#" id="email_a"><img src="sample.png"/></a>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!