Google reCAPTCHA
Ir para navegação
Ir para pesquisar
Link para criação
[https://www.google.com/recaptcha/admin/create]
Copie Site key e Secret key que o Google gera. Você usará:
- Site key no front-end (formulário HTML).
- Secret key no back-end (validação no servidor).
Carregue o script do reCAPTCHA
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
No formulário
No Model
$recaptchaResponse = $this->request->getPost('g-recaptcha-response');
// Sua Secret Key (do passo 1)
$secretKey = 'SUA_SECRET_KEY_AQUI';
// Monta a URL para validar com o Google
$url = 'https://www.google.com/recaptcha/api/siteverify';
// Dados a serem enviados ao Google: secret, response e IP do usuário (opcional)
$data = [
'secret' => $secretKey,
'response' => $recaptchaResponse,
'remoteip' => $this->request->getIPAddress(),
];
// Fazer requisição POST para o reCAPTCHA
$options = [
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query($data),
'timeout' => 10,
],
];
$context = stream_context_create($options);
$verify = file_get_contents($url, false, $context);
$captchaSuccess = json_decode($verify);
// Verifica o resultado:
if ($captchaSuccess->success) {
// reCAPTCHA validado com sucesso → prossiga com o processamento dos dados (por ex. salvar no DB, enviar email etc.)
// Exemplo simples:
echo "CAPTCHA OK! Nome: " . esc($nome) . ", E-mail: " . esc($email);
// Aqui você pode redirecionar para uma página de sucesso, gravar no banco, enviar e-mail, etc.
} else {
// Caso o reCAPTCHA falhe, exiba erro ou redirecione de volta ao formulário
echo "Falha na validação do reCAPTCHA. Por favor, tente novamente.";
// Ou use session/flashdata para exibir a mensagem em outra view:
// return redirect()->back()->with('error', 'Por favor, confirme que você não é um robô.');
}