Kullanıcıları için bir e-posta adresini görüntülemek ama robot gizlemek nasıl?

10 Cevap php

PHP, Javascript veya Jquery kullanarak bunu yapmak için şık ve kolay / basit bir yolu var mı?

10 Cevap

Sen bir görüntü oluşturmak için PHP imagestring () işlevini kullanabilirsiniz.

<?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);
?>

Bunu yapmanın birçok yolu vardır. Biz Python / javascript ile som şanslar obfuscating kaynağını yaşadım. Bir başka basit favori CSS unicode-bidi tekniktir:

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

Çıkış yazdırır:

foo@bar.com

Sen reCAPTCHA Mailhide içine bakmak isteyebilirsiniz. Bu PHP kullanımı kolay olmalıdır.

Web sayfalarındaki metin olarak e-posta adreslerini ASLA yazmak asla!

ve tarayıcı botlar kesinlikle JS etkin-_-var

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

Ancak robotlar kolayca bu hesap.

Eğer gerçekten motive Aksi halde, size e-posta adresi, dinamik bir görüntü görüntüleyebilirsiniz.

Bu mükemmel bir çözüm değil, ama Enkoder (http://hivelogic.com/enkoder) Bunun için oldukça yararlıdır. Bu adres karartmak için Javascript kullanılmaktadır.

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

Ben kullanmak başka bir yaklaşımdır:

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

Hem teknik, kullanıcılara mükemmel erişilebilir, tıklanabilir bir bağlantı vermek fazlalaştı.

Bu de çalışmak?

Bu gibi bir şey kullanarak

<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 ..

Sadece hızlı düşündüm ...

Bu yapmak zordur. Eğer okunabilir tarayıcınız tarafından insan okunabilir bir robot tarafından kılınabilir işlenen bir görüntü, bir şey kullanmak sürece. Bu yüzden bile HTML kaynağı bir şekilde e-e-posta şifreleme ve sonra sayfa render dinamik kapış de bir javascript işlevi kullanarak, bu aynı zamanda DOM tam render yapan bir robot tarafından mağlup olacaktır.

Yakın zamana kadar ben yukarıdaki yöntemi ile iyi bir başarı vardı ve herhangi bir istenmeyen görmedim. Ancak son zamanlarda ben adreslerini aldım olmuştur görünüyor fark etmişsinizdir. Yani sadece e-posta trol şimdi tam DOM işleme yapıyoruz varsayabiliriz.

Yani sonuçlandırmak için - bir görüntü muhtemelen en iyi (hatta% 100 olmasa da)

Aşağıda, bu sorun için bir çözüm basit jquery:

<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>