Función de PHP para evitar SPAM

Como muchos han de saber, una de las manera en que los asquerosos Spammers obtienen cuentas de correo es por medio de aplicaciones que buscan emails en las páginas.

Para evitar exponer tu cuenta de correo existen varias técnicas… he aquí una solución que hice en PHP en la cual estoy mezclando 3 de las prevenciones más comunes.

En pocas palabras lo que hace mi funcion es:

  1. Convertir los caracteres . (punto) y @ (aroba) en sus equivalentes de HTML.
  2. Romper el email y el texto del link en pedacitos.
  3. Genera un javascript que finalmente muestra el link.

Para utilizarlo solo es necesario agregar la función a tu código y llamarla en una de las siguientes maneras:

echo encode_email();
echo encode_email('micorreo@midominio.com');
echo encode_email('micorreo@midominio.com', 'Mandame un mail');
echo encode_email('micorreo@midominio.com', 'Mandame un mail', 'title="No seas malito escribeme"');

Puedes darle como parametros la cuenta de email, el texto que quieres que aparezca en link y finalmente los atributos a incluir dentro del tag A de HTML.

Aquí esta la famosa función:

function encode_email($email='default@domain.com', $linkText='Contacto', $attrs ='class="emailencoder"' )
{
// remplazar aroba y puntos
$email = str_replace('@', '@', $email);
$email = str_replace('.', '.', $email);
$email = str_split($email, 5);
$linkText = str_replace('@', '@', $linkText);
$linkText = str_replace('.', '.', $linkText);
$linkText = str_split($linkText, 5);

// html
$part1 = ‘<a href=”ma’;
$part2 = ‘ilto:’;
$part3 = ‘” ‘. $attrs .’ >’;
$part4 = ‘</a>’;

// generamos el Javascript
$encoded = ‘<script type=”text/javascript”>’;
$encoded .= “document.write(‘$part1’);”;
$encoded .= “document.write(‘$part2’);”;
foreach($email as $e)
{
$encoded .= “document.write(‘$e’);”;
}
$encoded .= “document.write(‘$part3’);”;
foreach($linkText as $l)
{
$encoded .= “document.write(‘$l’);”;
}
$encoded .= “document.write(‘$part4’);”;
$encoded .= ‘</script>’;
return $encoded;
}

Solo les recuerdo cambiar los valores default (por lo menos el email) si piensan utilizarla.