você está aqui: Home  → Arquivo de Mensagens Curso Gratuito sobre Expressões Regulares, com o Prof.  Julio Neves

Ocultando e-mails com PHP e JavaScript

Colaboração: Glaydson Lima

Data de Publicação: 06 de Janeiro de 2005

Um dos grandes problemas na publicação de e-mails em sites, fóruns e lista de discussão, é a possibilidade de programas robôs de spammers capturarem este e-mails. E aí, uma vez capturados, os e-mail publicados tendem a receber cada vez mais lixos eletrônicos. Em muitos fóruns ficou comum a modificação da escrita do e-mail para formas similares. Por exemplo:

<fulano (a) provedor com br> torna-se fulano [!arroba!] provedor [ponto] com [ponto] br

Os programas dos spammers buscam nas páginas informações com o símbolo arroba e montam os e-mails.

Para segurança das pessoas que postam mensagens, existe a possibilidade de usar uma combinação de PHP e Java Script que camuflam os e-mails. Para este modelo, é necessário ter a biblioteca GD do PHP instalada.

Iremos desenvolver com 3 arquivos:

inc_vars.php

Arquivo que contém a codificação dos caracteres arroba e ponto. Esta codificação não pode conter sequência de caracteres comuns e deve variar sempre que possível.

<?php
       # Define as constantes de substituição do arroba e ponto dos e-mails
       define("CONS_ARROBA","_arroba_");
       define("CONS_PONTO","_pt_");
?>

imagemEmail.php

Criará uma imagem com o e-mail codificado. Esta imagem será normalmente legível pelos usuários.

<?php

require("inc_vars.php");

// define tamanho da imagem de acordo com o e-mail
$largura = strlen($_GET["email"])*6;

// cria uma imagem
$im = imagecreate($largura, 13);

// Define cor de fundo e cor do texto
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 39, 104, 124);

// Escreve a string do e-mail
imagestring($im, 3, 0, 0, str_replace(CONS_PONTO,".",str_replace(CONS_ARROBA,"@",$_GET["email"])), $textcolor);

// Retorna a imagem
header("Content-type: image/png");
imagepng($im);
?>

3.arquivo.php   Será o arquivo principal, contendo a chamada para o script de imagem e o JavaScript que montará o  mailto  correto.

<?php
       require("inc_vars.php");

        function ocultaEmail($PEmail) {
               $emailCodificado = str_replace("@",CONS_ARROBA,$PEmail);
               $emailCodificado = str_replace(".",CONS_PONTO,$emailCodificado);
               return "<a href=\"#\" onClick=\"converteMailTo(this,'$emailCodificado')\"><img border=\"0\" src=\"imagemEmail.php?email=" . $emailCodificado ."\"></a>";
       }

?>
<html>
<head>
       <script language="JavaScript">
               function converteMailTo(PObj,PEmail) {
                       PEmail = String(PEmail).replace(new RegExp("<? echo CONS_ARROBA; ?>","gi"),"@");
                       PEmail = String(PEmail).replace(new RegExp("<? echo CONS_PONTO; ?>","gi"),".");
                       PObj.href = "mailto:" + PEmail;
               }
       </script>
</head>
<body>
       <p>
       <? echo ocultaEmail("fulano@provedor.com.br");?>
       </p>
</body>
</html>

Veja um exemplo do resultado desta combinação.



Veja a relação completa dos artigos de Glaydson Lima