← Tutoriais

[PHP] Transformar Endereços de Email em Imagens

Lida 2408 vezes

Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Devido ao aumento e aparecimento cada vez mais acentuado de Spam Bots, tive necessidade de criar um pequeno script que transforma endereços de email (texto) em imagens.
Não duvido que haja por aí scripts já feitos com o mesmo objectivo, mas quem me conhece, sabe que não gosto de utilizar 'coisas' já feitas (entenda-se 'coisas' como scripts php), então resolvi partilhar o meu trabalho com todos.

Para este exemplo vamos utilizar 3 ficheiros:

 :arrow:  imagem.php
 :arrow:  exemplo.php
 :arrow:  fonte.TTF

imagem.php:
É aqui que está o código que vai criar a nossa imagem.

exemplo.php:
Como o próprio nome indica vai servir de exemplo para a utilização do script

fonte.TTF
É o ficheiro TrueType que vamos utilizar para criar o texto na imagem.
Para este exemplo utilizei uma fonte específica, mas podem utilizar qualquer outra fonte.
Se quiserem podem fazer o download da fonte que utilizei aqui: http://www.uploading.com/files/4R7AJYR7/fonte.TTF.html

imagem.php:
Código: [Seleccione]
<?php
/////////////////////////////////////////////////////////////////////////////////////////////////// 
//                              *** Elaborado por =IceBurn= ***                                  // 
//                     Cria Uma Imagem a Partir de Um Endereço de Email                          // 
//             <><><><><><><><><><><> WWW.TENHAMEDO.NET <><><><><><><><><><><>                   // 
///////////////////////////////////////////////////////////////////////////////////////////////////
if &#40;!empty&#40;$_GET['e'&#93;&#41;&#41; &#123;

header&#40;"Content-type&#58; image/gif"&#41;; 
header&#40;"Cache-control&#58; no-store,no-cache,must-revalidate"&#41;;

$email   base64_decode&#40;$_GET['e'&#93;&#41;;
$email   strtolower&#40;$email&#41;;
$largura strlen&#40;$email&#41;;
$largura $largura*10;

$imagem ImageCreateTrueColor&#40;$largura, 25&#41;;
      
$transp ImageColorAllocate&#40;$imagem, 255, 0, 0&#41;; 
          
  ImageColorTransparent&#40;$imagem, $transp&#41;;

$cortxt ImageColorAllocate&#40;$imagem, 245, 245, 0&#41;;
          
if &#40;eregi&#40;"^[_\.0-9a-z-&#93;+@&#40;[0-9a-z&#93;[0-9a-z-&#93;+\.&#41;+[a-z&#93;&#123;2,6&#125;$", $email&#41;&#41; 
&#123;
          
Imagettftext&#40;$imagem, 13, 0, 1, 19, $cortxt, "fonte.TTF", "$email"&#41;;
 
&#125; else &#123;
          
Imagettftext&#40;$imagem, 13, 0, 1, 19, $cortxt, "fonte.TTF", "?"&#41;;
&#125;         
  Imagegif&#40;$imagem&#41;;
          
ImageDestroy&#40;$imagem&#41;;
&#125;
?>

_______________________________________________________________________________________________________________


Agora um aspecto muito importante:
Para sistemas Unix não precisam alterar nada, mas em Windows alterem
Código: [Seleccione]
$transp = ImageColorAllocate($imagem, 255, 0, 0);
por:
Código: [Seleccione]
$transp = imagecolorallocate($imagem, 0, 0, 0);
Se não o fizerem vão ficar com um fundo preto em vez de um fundo transparente. Portanto fica já a dica para não massacrarem a cabeça como eu massacrei até descobrir a solução. :lol:

Portanto, agora que já temos o código principal, vamos pôr em prática:
exemplo.php:
Código: [Seleccione]
<html>
 <body>

<?php
$mail 
"meuemail@dom.com"
$mail base64_encode&#40;$mail&#41;;
?>


<img src="imagem.php?e=<?=$mail;?>" alt="" border="0"/>

   </body>
</html>

E pronto, ficamos com uma imagem em vez de um endereço de email tão cobiçado pelos Spam Bots.  :wink:

Mas, para  não deixar um Spam Bot irritado,  (tadinho) sempre podem colocar nos vossos sites este exelente link:
 :arrow: http://www.billism.com/randemail.html
Tenho a certeza que o Bot vai adorar!  :lol:  :lol:  :lol: :lol:
Offline

asturmas 
Administrador
Mensagens 19734 Gostos 49
Feedback +2

Troféus totais: 39
Trófeus: (Ver todos)
Mobile User Windows User Super Combination Combination Topic Starter 100 Poll Votes 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter

Amanha testo tks  :D