· 7 years ago · Aug 16, 2018, 07:12 PM
1<div class="g-recaptcha" id="captcha" data-sitekey="6LdAHWcUAAAAAPFO6j34mmWwhRer0K8Kp8901jM-" data-error-callback="errorRecaptcha" data-expired-callback="recaptchaExpired"></div>
2
3 <script>
4 // Função que bloqueia o submit quando o recaptcha expira
5 function recaptchaExpired(){
6 alert("ReCaptcha expirado, por favor verifique novamente !");
7 setTimeout(function(){location.reload()}, 500);
8 }
9
10 function errorRecaptcha(){
11 alert("Erro ao Validar Recaptcha");
12 setTimeout(function(){location.reload()}, 500);
13 }
14 </script>
15
16$captcha = $_POST['g-recaptcha-response'];
17$secret_key = "***";
18
19$content = http_build_query(array(
20'secret' => $secret_key,
21'response' => $captcha,
22));
23
24$context = stream_context_create(array(
25'http' => array(
26 'method' => 'POST',
27 'content' => $content
28)
29));
30
31//A função abaixo realiza o envio da resposta captcha para verificação e tem como retorno um JSON
32$result_json = file_get_contents('https://www.google.com/recaptcha/api/siteverify', null, $context);
33
34$array_result = json_decode($result_json, true);
35
36//Valida se o retorno do servidor é true ou false para o captcha informado
37$resp_captcha = intval($array_result['success']);
38if ($resp_captcha === 1) {
39
40<form action="login.php" method="post">
41 <input type="text" name="username" placeholder="Digite o seu nome de usuário">
42 <input type="password" name="password" placeholder="Digite a sua senha">
43 <div class="g-recaptcha" data-sitekey="SUA-CHAVE"></div>
44</form>
45
46// Aqui você recebe um valor fornecido pelo reCAPTCHA
47$captcha_code = $_POST['g-recaptcha-response'];
48
49// Caso nenhum valor for recebido é porque o usuário nem respondeu o captcha
50if (!$captcha_code) {
51 echo "Por favor, responda o captcha.";
52 exit;
53}
54
55// Se o usuário realmente respondeu o reCAPTCHA vamos fazer uma requisição para a API do captcha utilizando o file_get_contents do php
56
57$resposta = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=SUA-CHAVE-SECRETA&response=".$captcha_code."&remoteip=".$_SERVER['REMOTE_ADDR']);
58$resposta = json_decode($resposta, true);
59
60// Lembre de colocar a sua chave secreta onde está SUA-CHAVE-SECRETA
61
62// Agora vamos validar se realmente a resposta é válida
63
64if ($resposta.success) {
65 echo "Logado com sucesso!";
66} else {
67 echo "Você precisa provar que não é um robô.";
68 exit;
69}
70
71<script>
72
73// Função que bloqueia o submit quando o recaptcha expira
74function recaptchaExpired() {
75 alert("ReCaptcha expirado, por favor verifique novamente !");
76 setTimeout(function () {
77 location.reload()
78 }, 500);
79}
80
81</script>