¿Cómo crear un formulario de contacto por email evitando el spam?


Queremos crear un formulario de contacto por vía email, evitando al usuario la necesidad de usar un cliente de correo. Es importante que evitemos el spam, para lo cual colocaremos un captcha, que hará de anti-spam.

Básicamente este artículo será la explicaión del formulario de contacto de mi web personal.

  1. Formulario en HTML: contactcode.html
    Lo primero que necesitamos es un formulario hecho en HTML, lo cual podremos encontrar en cantidades ingentes por la red, o hacerlos nosotros mismos. Por ejemplo, mi formulario es algo como:

    Aquí lo importante son varias cosas: Que tenemos campos de tipo INPUT para el Nombre, Email, Asunto y Código de verificación o captcha, cuyo atributo NAME es importante para hacer referencia a los mismos; Además, tenemos que el atributo ACTION del FORM es el fichero donde vamos a colocar nuestro fichero PHP (contactcode.php), que validará los datos introducidos en estos campos; Por último, el atributo de la imagen del captcha, hace referencia al fichero donde generamos el captcha (captchacode.php) asignando además una variable aleatoria.

  2. Código PHP: contactcode.php
    Esta es la funcion principal, que mediante $_POST[‘variable‘] va recogiendo los datos introducidos en el formulario, donde variable es el valor que introducimos en el campo NAME del formulario:

    Hemos de personalizar el mensaje, el destinatario y el asunto, cambiando lo que esta entre las etiquetas Inicio codigo personalizable y Fin codigo personalizable.

    Nos hacen falta dos funciones más, validarMail() y validarCaptcha(), que no hacen otra cosa que validar si el mail es correcto y validar si el captcha escrito coincide con el generaremos. Veamos la funcion validarMail():

    Y finalmente, la comprobación de que el captcha generado aleatoriamente, coincide con el introducido por teclado. Es importante que volvamos a iniciar la sesión con session_start(), pues el captcha que generemos en el otro fichero php, no sería accesible si no hacemos esto. Por tanto, el código para la función validarCaptcha() sería:

  3. Código PHP: captchacode.php
    El siguiente código podemos copiarlo tal cual, ya que lo que nos va a hacer es generarnos el captcha. Hay una parte personalizable, donde cambiar el tamaño de la imagen, el nombre de la fuente que vayamos a usar, el color de la fuente, etc… Veamos el código:

    La parte personalizable se encuentra entre las líneas 13 y 24.

Con esto, ya tendríamos listo nuestro formulario de contacto.

Dejar un Comentario