Muchas veces tenemos un sitio web de negocios y estamos cansados de recibir spam en la página de Contacto, Contáctenos, o como sea llamada.  ¿Es posible evitar el spam? ¿Es possible evitar que las máquinas zombies envien correos? Si, podemos detener estás tácticas.

Usted necesita instalar Captcha, en cual genera una imagen para verificar que es una persona la que está escribiendo realmente el formulario y no un sistema automatizado. Hay muchas librerías para PHP e incluso para páginas .ASPX. Yo recomiendo la librería PHP reCAPTCHA, la cual proporciona una forma simple de instalar  CAPTCHA en sus formularios PHP. Esto puede hacer detener a los motores automatizados de spam. Esto funcionará con la API de reCAPTCHA.

Paso # 1: Obtener la librería reCAPTCHA

Visitando el sitio web de reCAPTCHA y registrándose para obtener la API key (esto es gratis). Usted tendrá su llave publica y llave privadas.

Paso # 2: Descargar e instalar reCAPTCHA PHP

Descargar la líbreria reCAPTCHA desde Google code repo:
$ cd /tmp
$ wget //recaptcha.googlecode.com/files/recaptcha-php-1.10.zip
Unzip recaptcha-php-1.10.zip, ingresando:
$ unzip recaptcha-php-1.10.zip
Finalmente, copiar recaptchalib.php al directorio donde usted tiene sus formularios web. Por ejemplo: si usted posee la página contacto.php en /var/www/html, entonces debe copiar recaptchalib.php de la siguientes forma:
$ cp /tmp/recaptcha-php-1.10/recaptchalib.php /var/www/html

Paso # 3: Probar y verificar

Crear un script php como el siguiente:

<html><head>
        <title>Formulario Simple de Correo</title>
</head><body>
<script>
    <strong>function</strong> checkForm() {
        if (document.forms.myphpform.elements['yname'].value.length == 0) {
                alert('Por favor ingrese un valor para el campo "Nombre"');
                return <strong>false</strong>;
        }
        if (document.forms.myphpform.elements['email'].value.length == 0) {
                alert('Por favor ingrese un valor para el campo "Email"');
                return <strong>false</strong>;
        }
        if (document.forms.myphpform.elements['message'].value.length == 0) {
                alert('Por favor ingrese un valor para el campo mensaje "Message"');
                return <strong>false</strong>;
        }
        return <strong>true</strong>;
   }
<strong>&lt;/script&gt;</strong>
&lt;form action="?done=1" method="post" name="myphpform" onSubmit="return checkForm()"  &gt;
&lt;table border=0&gt;
&lt;tr&gt;&lt;td&gt;Su Nombre:&lt;/td&gt;
&lt;td&gt;
&lt;input type="text" name="yname" size="50" maxlength="50" value="" /&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Su Email:&lt;/td&gt;
&lt;td&gt;
&lt;input type="text" name="email" size="50" maxlength="50" value="" /&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Mensaje:&lt;/td&gt;
&lt;td&gt;
&lt;input type="text" name="message" size="50" maxlength="50" value="" /&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;¿Es usted un humano?&lt;/td&gt;&lt;td&gt;
<strong>&lt;?php</strong>

@require_once('recaptchalib.php');
$publickey = "YOUR-PUBLIC-KEY";
$privatekey = "YOUR-PRIVATE-KEY";

$resp = <strong>null</strong>;
$error = <strong>null</strong>;

if ($_POST["submit"]) {
  $resp = recaptcha_check_answer ($privatekey,
                                  $_SERVER["REMOTE_ADDR"],
                                  $_POST["recaptcha_challenge_field"],
                                  $_POST["recaptcha_response_field"]);

  if ($resp-&gt;is_valid) {
        $to="usted@ejemplo";
        $subject="Feedback from ejemplo";
        $body=" Mensaje via webform:

Nombre: " .$_POST["yname"] . "<strong>\n</strong>
Email: " .$_POST["email"] . "<strong>\n</strong>
Message: " .$_POST["message"] . "<strong>\n</strong>";
        <em>/*  enviando correo */</em>
        <a href="//www.php.net/mail">mail</a>($to,$subject,$body);
        <a href="//www.php.net/echo">echo</a> "

Correo Enviado!

";
        <a href="//www.php.net/exit">exit</a>(1);

  } else {
        <a href="//www.php.net/echo">echo</a> "Lo sentimos pero no ha colocado el texto correctamente! Intente nuevamente...";
  }
}
<a href="//www.php.net/echo">echo</a> recaptcha_get_html($publickey, $error);
<strong>?&gt;</strong>
&lt;td/&gt;
        &lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;
&lt;input type="submit" name="submit" value="submit" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
(Visitado 977 veces, 1 visitas hoy)