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-21 02:38:13

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!