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:
imagem.php
exemplo.php
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.htmlimagem.php:<?php
///////////////////////////////////////////////////////////////////////////////////////////////////
// *** Elaborado por =IceBurn= *** //
// Cria Uma Imagem a Partir de Um Endereço de Email //
// <><><><><><><><><><><> WWW.TENHAMEDO.NET <><><><><><><><><><><> //
///////////////////////////////////////////////////////////////////////////////////////////////////
if (!empty($_GET['e'])) {
header("Content-type: image/gif");
header("Cache-control: no-store,no-cache,must-revalidate");
$email = base64_decode($_GET['e']);
$email = strtolower($email);
$largura = strlen($email);
$largura = $largura*10;
$imagem = ImageCreateTrueColor($largura, 25);
$transp = ImageColorAllocate($imagem, 255, 0, 0);
ImageColorTransparent($imagem, $transp);
$cortxt = ImageColorAllocate($imagem, 245, 245, 0);
if (eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$", $email))
{
Imagettftext($imagem, 13, 0, 1, 19, $cortxt, "fonte.TTF", "$email");
} else {
Imagettftext($imagem, 13, 0, 1, 19, $cortxt, "fonte.TTF", "?");
}
Imagegif($imagem);
ImageDestroy($imagem);
}
?>
_______________________________________________________________________________________________________________
Agora um aspecto muito importante:
Para sistemas Unix não precisam alterar nada, mas em Windows alterem
$transp = ImageColorAllocate($imagem, 255, 0, 0);
por:
$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.
Portanto, agora que já temos o código principal, vamos pôr em prática:
exemplo.php:<html>
<body>
<?php
$mail = "meuemail@dom.com";
$mail = base64_encode($mail);
?>
<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.
Mas, para não deixar um Spam Bot irritado, (tadinho) sempre podem colocar nos vossos sites este exelente link: http://www.billism.com/randemail.html Tenho a certeza que o Bot vai adorar!