Impedir e-mails de spam de bots (sem captcha)

Um problema comum que muitos desenvolvedores enfrentam ao criar um formulário que envia um e-mail de um site enquanto o formulário não tem um Captcha, é que o destinatário geralmente recebe muitos e-mails de spam de bots de publicidade.

Uma solução fácil para esse problema consiste em três partes:

  1. Adicione uma entrada oculta em seu formulário

    <form id="your_form" action="some_action_if any">
    ...

    <input type="hidden" id="some_unique_id" name="some_pretty_normal_name" value="value_to_remove" />
    ...

    </form>
  2. Ao enviar o formulário, esvazie a entrada oculta

    /* This example is given with jQuery, though it can be implemented however you like. */

    $
    (document).ready(function() {
    $
    ("#your_form").submit(function() {
    $
    ("#some_unique_id").val('');
    });
    });
  3. No lado do servidor, envie o e-mail apenas se a entrada oculta estiver vazia

    <?php
    ...
    if (!isset($_REQUEST['some_pretty_normal_name']) || empty($_REQUEST['some_pretty_normal_name'])) {
    ...
    mail
    ($to, subject, $body, $headers);
    }
    ...
    ?>

E é isso !


Este método foi verificado em http://streamer.co.il depois de ter sido spam por anúncios arbitrários e agora eles recebem e-mails de seres humanos reais 🙂