问题
Is there an elegant and easy/simple way to do it using PHP, Javascript or Jquery?
回答1:
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);
?>
回答2:
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
回答3:
You might want to look into reCAPTCHA Mailhide. It should be easy to use from PHP.
回答4:
never write email addresses as text on webpages, NEVER!
and browser bots surely have JS enabled -_-
回答5:
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.
回答6:
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.
回答7:
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.
回答8:
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!
回答9:
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 ...
回答10:
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%)
回答11:
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>
来源:https://stackoverflow.com/questions/1873992/how-to-display-an-email-address-for-users-but-hide-from-robot-is-there-a-simply