Importante: a versão 1.0 da API reCAPTCHA não é mais compatível. Faça upgrade para a versão 2.0. Saiba mais
A biblioteca reCAPTCHA para PHP oferece uma maneira simples de inserir um CAPTCHA em seu site PHP, o que ajuda você a impedir que os bots abusem dele. A biblioteca envolve a API reCAPTCHA.
Para usar o reCAPTCHA com PHP, faça o download do reCAPTCHA PHP biblioteca. Você só vai precisar de um arquivo (recaptchalib.php). Os outros arquivos são exemplos, leia-me e coisas legais, mas não afetam a funcionalidade.
Início rápido
Depois de se inscrever para as chaves de API, veja abaixo as instruções básicas para instalar o reCAPTCHA no seu site. Confira abaixo um guia de referência completo do plug-in do PHP.
Lado do cliente (como fazer a imagem CAPTCHA aparecer)
Se quiser usar a biblioteca PHP para exibir o widget reCAPTCHA, você precisará inserir este snippet de código no <form> elemento em que o widget reCAPTCHA estará colocado:
require_once('recaptchalib.php'); $publickey = "your_public_key"; // you got this from the signup page echo recaptcha_get_html($publickey);
Com o código, seu formulário pode ficar assim:
<html> <body> <!-- the body tag is required or the CAPTCHA may not show on some browsers --> <!-- your HTML content --> <form method="post" action="verify.php"> <?php require_once('recaptchalib.php'); $publickey = "your_public_key"; // you got this from the signup page echo recaptcha_get_html($publickey); ?> <input type="submit" /> </form> <!-- more of your HTML content --> </body> </html>
Não se esqueça de definir $publickey substituindo your_public_key
pela sua chave pública de API.
O valor do atributo "action" atributo é "verify.php". Agora, verify.php é o arquivo de destino para o qual os valores desse formulário são enviados. Você precisa de um arquivo check.php no mesmo local que o html do cliente.
A função "require_once" no exemplo acima espera que o recaptchalib.php esteja no mesmo
diretório do arquivo do formulário. Se ele estiver em outro diretório, vincule-o corretamente.
Por exemplo, se o recaptchalib.php estiver no diretório "captcha", no mesmo
nível do arquivo do formulário, a função vai ficar assim:
require_once('captcha/recaptchalib.php')
.
Do lado do servidor (como testar se o usuário digitou a resposta certa)
O código a seguir precisa ser colocado na parte de cima do arquivo verify.php:
<?php require_once('recaptchalib.php'); $privatekey = "your_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 } ?>
No código acima:
recaptcha_check_answer
retorna um objeto que representa se o usuário
concluiu o desafio.$resp->is_valid
for verdadeiro, o desafio do captcha foi concluído corretamente e você poderá continuar o processamento do formulário.$resp->is_valid
for falso, o usuário não forneceu o captcha correto
e você deve exibir o formulário novamente para permitir uma nova tentativa. Nesse caso,
$resp->error
será um código de erro que pode ser fornecido para recaptcha_get_html
.
Transmitir o código de erro faz o controle reCAPTCHA mostrar uma mensagem explicando que o usuário
digitou o texto incorretamente e deve tentar novamente.Observe que esse código está solicitando a chave private, que não deve ser confundida. com a chave pública. Você encontra isso na mesma página da chave pública.
Além disso, verifique se o formulário está configurado para receber as variáveis usando $_POST em vez de $_REQUEST e se o formulário está usando o método POST.
É isso! O reCAPTCHA já deve estar funcionando no seu site.
Leitura adicional
Guia de referência do plug-in para PHP
Veja abaixo uma lista abrangente de todos os métodos do plug-in reCAPTCHA para PHP.
A função recaptcha_get_html
A função recaptcha_get_html
exibe o HTML que apresenta o reCAPTCHA para
as
usuário.
recaptcha_get_html | |
Parâmetro | |
$pubkey: string. Obrigatório. | Sua chave pública do reCAPTCHA, da página de inscrição da API |
$error -- string. opcional (o padrão é nulo) | Se essa string for definida, a área reCAPTCHA vai mostrar o código de erro. dado. Esse código de erro vem de ReCaptchaResponse->$error |
$use_ssl: booleano. Opcional (o padrão é "false"). | A API baseada em SSL precisa ser usada? Se você está exibindo uma página para o usuário por SSL, defina-o como "true" para que uma caixa de diálogo de erro não aparecer no navegador do usuário. |
Valor de retorno | String com HTML a ser colocado na página da Web. |
A função recaptcha_check_answer
Depois que o usuário preencheu o formulário HTML, incluindo a resposta para o CAPTCHA, nós
quiser verificar a resposta quando enviar o formulário usando o
função recaptcha_check_answer
. A resposta do usuário estará em dois campos de formulário:
recaptcha_challenge_field
e recaptcha_response_field
. A
biblioteca reCAPTCHA vai fazer uma solicitação HTTP para o servidor reCAPTCHA e verificar a resposta do
usuário.
recaptcha_check_answer | |
Parâmetro | |
$privkey: string obrigatória. | Sua chave privada reCAPTCHA, da página de inscrição na API. |
$remoteip -- string. obrigatórios. | O endereço IP do usuário, no formato 192.168.0.1 |
$challenge: string. Obrigatório. |
O valor do campo de formulário recaptcha_challenge_field |
$response: string obrigatória. | O valor do campo do formulário recaptcha_response_field |
Valor de retorno | Uma instância da classe ReCaptchaResponse |
ReCaptchaResponse | |
Campo | |
$is_valid: booleano | O reCAPTCHA considerou a resposta válida? |
$error: string | Se a resposta for inválida, qual foi o problema? Esse código de erro pode ser usado em recaptcha_get_html |
Valor de retorno | O HTML ou o URL bruto para decodificar o endereço de e-mail, dependendo da função chamada. |
Correir
A biblioteca PHP do reCAPTCHA inclui vinculações para a API Mailhide. Isso A API permite que você empacote um e-mail em um reCAPTCHA para evitar que criadores de spam o vejam: exame...@example.com.
A parte Mailhide da biblioteca PHP requer o módulo mcrypt do PHP.
A API Mailhide consiste em duas funções, recaptcha_mailhide_html
e
recaptcha_mailhide_url
. As funções têm os mesmos parâmetros. A versão _html
retorna HTML
que pode ser colocado diretamente na sua página da Web. A parte do nome de usuário do e-mail que é passado
é truncado e substituído por um link que chama o Mailhide. A versão _url fornece o URL
decodificar o e-mail e deixar que você o coloque em HTML.
recaptcha_mailhide_url / recaptcha_mailhide_html | |
Parâmetro | |
$pubkey: string | A chave pública do Mailhide na página de inscrição |
$privkey -- string | A chave privada do Mailhide da página de inscrição |
$email -- string | O endereço de e-mail que você quer ocultar. |
O exemplo a seguir mostra como usar o Mailhide:
<html><body> <? require_once ("recaptchalib.php"); // get a key at http://www.google.com/recaptcha/mailhide/apikey $mailhide_pubkey = ''; $mailhide_privkey = ''; ?> The Mailhide encoding of example@example.com is <? echo recaptcha_mailhide_html ($mailhide_pubkey, $mailhide_privkey, "example@example.com"); ?>. <br> The url for the email is: <? echo recaptcha_mailhide_url ($mailhide_pubkey, $mailhide_privkey, "example@example.com"); ?> <br> </body></html>