26/01/2024
CAPTCHA é um sistema que verifica se o usuário é uma pessoa real e não um robô, usado em formulários online para prevenir spam e abusos automatizados.
Neste tutorial, ensinaremos como implementar o Google reCAPTCHA em um site PHP, abrangendo desde a obtenção das chaves necessárias até a validação do reCAPTCHA no seu formulário.
Para integrar o reCAPTCHA do Google no seu site, você precisa de duas chaves específicas, através dos seguintes procedimentos:
Anote as 'Chave do Site' e a 'Chave Secreta', pois você precisará utilizá-las em seu site.
Agora que você tem as chaves do reCAPTCHA, o próximo passo é integrá-lo ao seu formulário HTML. Primeiro, crie seu formulário com os campos necessários. Em seguida, adicione o script do reCAPTCHA fornecido pelo Google, substituindo CHAVE_DO_SITE
pela chave que você obteve.
<form action="enviar.php" method="post">
<label for="nome">Nome:</label>
<input type="text" id="nome" name="nome" required><br><br>
<label for="email">E-mail:</label>
<input type="email" id="email" name="email" required><br><br>
<label for="mensagem">Mensagem:</label>
<textarea id="mensagem" name="mensagem" required></textarea><br><br>
<!-- Campo oculto para o token do reCAPTCHA -->
<input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response">
<input type="submit" value="Enviar">
</form>
<script src="https://www.google.com/recaptcha/api.js?render=CHAVE_DO_SITE"></script>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('CHAVE_DO_SITE', {action: 'submit'}).then(function(token) {
document.getElementById('g-recaptcha-response').value = token;
});
});
</script>
Depois de criar o formulário HTML, o próximo passo é escrever o script PHP que irá processar os dados do formulário e validar a resposta do reCAPTCHA.
O script verificará a resposta do reCAPTCHA para garantir que o usuário seja um humano real. Substitua CHAVE_SECRETA
pela Chave Secreta do reCAPTCHA e nome@dominio.com.br
pelo e-mail que receberá os dados do formulário.
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Captura de dados do formulário
$nome = strip_tags(trim($_POST["nome"]));
$email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
$mensagem = trim($_POST["mensagem"]);
$recaptcha_response = $_POST['g-recaptcha-response'];
// Verificação do reCAPTCHA
$url = "https://www.google.com/recaptcha/api/siteverify";
$data = [
'secret' => 'CHAVE_SECRETA',
'response' => $recaptcha_response,
'remoteip' => $_SERVER['REMOTE_ADDR']
];
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data)
]
];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
$responseKeys = json_decode($response, true);
if ($responseKeys["success"]) {
// O usuário é um humano, processar o formulário
$para = 'nome@dominio.com.br'; // Email do administrador do site
$assunto = 'Nova mensagem do formulário de contato';
$conteudo_email = "Nome: $nome\n";
$conteudo_email .= "Email: $email\n\n";
$conteudo_email .= "Mensagem:\n$mensagem\n";
// Cabeçalhos do e-mail
$headers = "From: $para\r\n";
$headers .= "Reply-To: $email\r\n";
// Envio do e-mail
if (mail($para, $assunto, $conteudo_email, $headers)) {
echo "Obrigado pelo seu contato, $nome!";
} else {
echo "Erro ao enviar a mensagem.";
}
} else {
// A verificação do reCAPTCHA falhou, tratar como suspeita de bot
echo "Falha na verificação do reCAPTCHA.";
}
} else {
// Método de requisição inválido
echo "Método de requisição inválido.";
}
?>
Este tutorial mostrou como adicionar o reCAPTCHA a um site usando PHP. Lembre-se, o exemplo dado é um ponto de partida. Adapte o código conforme necessário, alterando os campos do formulário ou adicionando suas próprias validações.
Veja também nosso tutorial sobre como implementar o reCAPTCHA em sites WordPress.