Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vic3nt

reCaptcha Google

Recommended Posts

Fala galera beleza!

 

Vou tentar ser o mais claro e breve possível.

 

Eu tenho um "formulário" com 2 campos, onde a pessoa coloca o nome, e no outro e-mail.

E graças à uns caras designados spammer's, me vi obrigado a usar algum esquema de captcha para deixar seguro o formulário.

 

Então preciso usar o reCaptcha do Google "sim! tem que ser do google", vi a documentação e vários tutoriais no YT, mas "todos" são de versões anteriores, eu preciso de usar a versão atualizada.

 

A versão atualizada eu consegui implementar no meu código e funciona, o user digita, ocorre a validação e o google retorna true....só que não tenho ideia como eu irei pegar este true retornado do google.

 

como esta na documentação:

https://developers.google.com/recaptcha/docs/verify

{
  "success": true | false,
  "error-codes": [...]   // optional
}

Alguém aí já usou a última versão do reCaptcha do Google? eu já segui tudo que a documentação "darkness" explica...e minhas aspirinas se esgotando.

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

E æ galera blz?

 

Enfim! resolvi o problema do reCapcha do Google, e agora entraremos p/ história, pq o que irei escrever, só vai ter aqui pq não achei tutorial algum!...o que tem pela internet é somente tutoriais de versões anteriores, que precisam de bibliotecas e conhecimento perito para implantar...ok let's go!

 

 

Primeiro de tudo, estou falando desta versão do reCaptcha:

 

recaptcha_google_print.png

 

"como não achei nome de versão nem nadda, coloquei a imagem"

 

 

Para colocar ele no seu formulário, vc precisa ter uma conta do google e acessar a página do reCaptcha : https://www.google.com/recaptcha/intro/index.html

 

Fazendo isto, vc clica em "Get reCAPCHA ", preencha o formulário "Register a new site" com o nome do seu domínio, localhost também funciona.

 

Após clicar em Resgister, suas keys de identificação serão geradas, são elas: Site Key e Secret Key.

 

 

Também será fornecido os html's, que deverão ser implantados:

<script src='https://www.google.com/recaptcha/api.js'></script>

e a div com seu Site Key já configurado:

<div class="g-recaptcha" data-sitekey="AAAAAAAAAAAAAA_000-a5sd4f15c61sd1f45454"></div>

Ok man's!...Até então isto que foi passado, é um processo intuitivo e esta explícito na documentação...agora vem a parte que eu me matei difícil.

 

 

 

Feito isso, a div do reCaptcha já estará aparecendo no seu html do formulário.

 

Seu formulário HTML não terá alterações; a "action" será configurada normalmente, vamos usar como exemplo o arquivo que irá receber o POST o valida.php.

 

 

Dentro do valida.php é o seguinte:

 

- Iremos verificar se tem um post chegando.

 

- Se "sim" configuramos as variáveis que irá receber a string de resposta do usuário $user_response, Secret Key $secret_key e um parâmetro opcional o remote_ip $ip_local.

 

- Agora com variáveis configuradas, podemos montar nosso link com os parâmetros exigidos pela validação do reCaptcha do Google usando o json_decode, no seguinte formato:

$test = json_decode(file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret_key.'&response='.$user_response.'&remoteip='.$ip_local.''));

Após executado o json_decode(...) com o link configurado, fazemos a verificação da resposta emitida pela validação do reCaptcha do Google, ele nos retorna o json object, a validação ocorre da seguinte forma:

if($test->{'success'} == true){

#se verdadeiro, executa seu código à partir daqui

} else {

#se falso, executa um alerta, usei como exemplo em javaScript.
echo '<script> alert(\'Código de validação incorreto!\'); </script>';


}

Após a validação, aí vc segue com seu script. :bye:

 

 

 

Segue o código completo:

if(isset($_POST['submit'])){

#recebe a string criptografada da resposta do usuário
$user_response = $_POST['g-recaptcha-response'];

#chave secreta fornecida pelo google Secret Key
$secret_key = 'sua_secretKey_aqui';

#pega o ip do user, é uma variável opcional.
$ip_local = $_SERVER["REMOTE_ADDR"];


$test = json_decode(file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret_key.'&response='.$user_response.'&remoteip='.$ip_local.''));

if($test->{'success'} == true){

#se verdadeiro, executa seu código à partir daqui

} else {

#se falso, executa um alerta, usei como exemplo em javaScript.
echo '<script> alert(\'Código de validação incorreto!\'); </script>';


}

}

O texto ficou meio grande, mas é simples de executar estes passos!... Obrigado @ExtremsX pela luz do json_decode!

 

Aqui tem o exemplo funcionando onde apliquei!

 

Abraço! :bye:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.