0

Aumentando segurança de seus formulários com o reCAPTCHA da Google

criado por Roberto Soares em 08/02/2012 10:17am
Para aumentar a segurança dos formulários em seus sites ou sitemas online, foi testado e implementado o recurso agora já incluído no JOOMLA 2.5 de reCAPTCHA, recurso de segurança de código livre da Google.
Através do site: http://code.google.com/intl/pt-BR/apis/recaptcha/docs/php.html
Podemos explorar como instalar este recurso em projeto de script em PHP puro ou em outras linguagens ou CMS como o próprio JOOMLA, WordPress, phpBB, MediaWiki.

Neste exemplo é apresentado a implementação do recurso em um formulário escrito em PHP sem CMS.

Para que o recaptcha funcione adequadamente deverá ter cadastro gratuito no site:
https://www.google.com/recaptcha

A clicar em MY ACCOUNT, faz-se o login com uma conta sua do gmail ou cadastrada no Google. Uma vez logado veremos como abaixo o menu de opções para se criar o TOKEN para o domínio onde aparecerá o recurso em seu formulário clicando-se em +Add a New Site

A quantidade de domínios para gerar estes TOKEN’s não sei se é ilimitada, mas podemos adicionar muitos domínios em uma única conta reCAPTHA.

Uma vez digitado no campo de domínio do site que irá ser carregado o recurso, será gerado duas chaves:
-Public Key;
- Private Key.

Tendo em mãos as chaves, iremos precisar de um arquivo rodando no servidor (recaptchalib.php). Os outros arquivos são exemplos, readme e outras coisas legais - eles não afetam a funcionalidade.

Para fazer funcionar precisará apenas incluir estas linhas básicas no formulário ao qual necessita-se de aumentar a segurança:
----------------------------------------------------------------------
  require_once('recaptchalib.php');
  $publickey = "your_public_key"; // coloque aqui a Public key
  echo recaptcha_get_html($publickey);
---------------------------------------------------------------------------------------------------------
Uma importante informação é que este arquivo que estamos incluindo deve estar na mesma pasta do formulario e arquivo de processamento, para seu perfeito funcionamento.

As próximas linhas de exemplo serão inseridas no arquivo que processará as informações do formulário (Server Side):
-----------------------------------------------------------------------------------------------------------------------
  require_once('recaptchalib.php');
  $privatekey = "your_private_key";  // coloque aqui a Private key
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    // What happens when the CAPTCHA was entered incorrectly
    die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
         "(reCAPTCHA said: " . $resp->error . ")");
  } else {
    // Your code here to handle a successful verification
  }
  ?>

------------------------------------------------------------------------------------------------------------------------
Uma vez inserido as respectivas chaves (pública e privada), bastará trabalhar a condição para restringir o cadastro caso os caracteres digitados não corresponderem, retornando ao formulário para uma nova validação.

Espero que tenha ajudado e uma abraço a todos(as).

Comentários:

Mostrando 1 - 5 de 5 comentários
Diego, vc pode usar Ajax na validação ou Ajax Jquery para impedir que os dados sejam passados sem digitar o Recaptcha.

Ao submeter seu formulário o seu IF condicional deve primeiro verificar o Recaptcha para depois fazer os processos de cadastros.

Como pode ser visto neste tutorial escrito acima:
-----------------------------------------------------------------------
require_once('recaptchalib.php');
$privatekey = "your_private_key"; // coloque aqui a Private key
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);

if (!$resp->is_valid) {
// What happens when the CAPTCHA was entered incorrectly
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");
} else {
//AQUI ENTRA O QUE O PHP VAI FAZER COM AS INFORMAÇÕES DO FORMULARIO
}
?>

---------------------------------------------------------------------
07/01/2014 11:26am (~6 meses atrás)

Diego disse:
Bom dia Roberto!
Estou desenvolvendo um formulário de cadastro, com o reCaptcha.
O mesmo já está funcionando, porém esse formulário tem um action para outra pagina, porém por isso quando o usuario nao preenche este reCaptcha, é direcionado para a pagina que o email e a insersao de dados no db.
O que preciso saber, é como fazer para que o repatcha seja obrigatório preencher, ou seja, quando o usuario clicar em Enviar, e o campo do reCaptcha estiver em branco, aparecer uma mensagem obrigando o mesmo à preencher o campo!

Obrigado!
01/10/2013 7:30am (~9 meses atrás)

Olá Roberto, tudo bem
caro me desculpa mais eu não entendi como usar o recaptcha em um formulário de e-mail.
por favor teria como você fazer um tutorial explicando???

agradeço!
18/08/2013 9:28pm (~11 meses atrás)

Thyago Silva disse:
Valeu! Vou procurar realizar as recomendações.

<a href="http://www.cupom.net">Cupom de Desconto</a>
18/06/2013 1:35am (~1 ano atrás)

Muito Bom cara !
06/06/2013 12:56pm (~1 ano atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)