Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amigos,
Estou tendo muita dificuldade para validar uma recaptcha do Google em meu site.
Já tentei de tudo e não dá certo.
O que está acontecendo é que o visitante do site não precisa validar a captcha para enviar a mensagem, apesar da captcha estar aparentemente funcionando, se o visitante clicar direto em enviar a mensagem, a mesma chega na caixa de emails, o que nao era para acontecer.
Quem puder ajudar agradecerei bastante.
Vejam o codigo do formulario:
<form action="http://site.com.br/cgi-sys/FormMail.cgi" method="post" name="formulario" id="formulario">
<input type="hidden" name="recipient" value="contato@site.com.br" />
<!-- CAMPO PARA AONDE SERÁ REDIRECIONADO DEPOIS DO ENVIO -->
<input type="hidden" name="redirect" value="http://www.site.com.br/enviado.html" />
<input type="text" input name="Nome" value="Nome" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Nome';}">
<input type="text" input name="subject" value="Assunto" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Assunto';}">
<input type="text" input name="Email" value="Email" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Email';}">
<input type="text" input name="Telefone" value="Telefone" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Telefone';}">
<input type="text2" input name="Mensagem" value="Mensagem" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Mensagem';}"></textarea>
<div class = "g-recaptcha" data-sitekey = "xxxx" ></div>
<br/>
<input type = "submit" value = "Enviar Mensagem" >
</form>
<!--js-->
<script src='https://www.google.com/recaptcha/api.js?hl=pt-BR'></script>
Index.php (não sei se seria necessario), andei lendo na web que seria, depois vi no Developers que parece que não, apesar de tudo, tudo que fiz nao fez a captcha rodar corretamente (obrigar a pessoa clicar nela para poder enviar a mensagem).
Codigo do index.php
<html>
<body>
<form action="" method="post">
<?php
require_once('recaptchalib.php');
// Get a key from https://www.google.com/recaptcha/admin/create
$publickey = "xxxxx";
$privatekey = "xxxxx";
if ($_POST["recaptcha_response_field"]) {
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if ($resp->is_valid) {
echo "You got it!";
} else {
# set the error code so that we can display it
$error = $resp->error;
}
}
echo recaptcha_get_html($publickey, $error);
?>
<br/>
<input type="submit" value="Enviar" />
</form>
</body>
</html>
Alguem sabe o que está errado? o Formmail? Se ter que mudar, como devo fazer? Se puder manter, o que poderia ser?
Ja modifiquei o form action do index.php para formmail e nada de dar certo =(
tentei varias coisas e nada.
quem puder ajudar, fica o meu obrigado registrado =)
$secret = "jfijqiwjdiqwjd1h2DD!@#@#@!#!2d1p12d";
$response = null;
$reCaptcha = new ReCaptcha($secret);
if($_POST["g-recaptcha-response"]){
$response = $reCaptcha->verifyResponse(
$_SERVER["REMOTE_ADDR"],
$_POST["g-recaptcha-response"]
);
}
}catch(exception $e){
echo "Ocorreu um erro de conexão com o ReCaptcha.<p>".$e->getFile()."</p><p>".$e->getLine()."</p><p>".$e->getMessage();
}*/
Lembrando do require_once 'recaptchalib.php'
Sei que pode parecer besteira, mas... você colocou o private/public key certos?
Sim, coloquei tudo certo, só aqui que substitui por xxx ....rs
>
$secret = "jfijqiwjdiqwjd1h2DD!@#@#@!#!2d1p12d";
$response = null;
$reCaptcha = new ReCaptcha($secret);
if($_POST["g-recaptcha-response"]){
$response = $reCaptcha->verifyResponse(
$_SERVER["REMOTE_ADDR"],
$_POST["g-recaptcha-response"]
);
}
}catch(exception $e){
echo "Ocorreu um erro de conexão com o ReCaptcha.<p>".$e->getFile()."</p><p>".$e->getLine()."</p><p>".$e->getMessage();
}*/
Lembrando do require_once 'recaptchalib.php'
Ele está lá no index.php
A captcha em si está funcionando, porém se o visitante clicar em Enviar Mensagem sem clicar nela, a mensagem é enviada, ou seja, é como se ela nao tivesse efeito algum.
O que pode ser? =(
if ($response != null && $response->success){
enviarMensagem();
else{
naoEnviarMensagem();
}>
if ($response != null && $response->success){
enviarMensagem();
else{
naoEnviarMensagem();
}
amigo, nao sou um expert em codigos, voce poderia por favor postar sua recomendação copiando o meu codigo todo para eu ver aonde tenho que colocar este codigo que voce disse?rs
muito obrigado pela ajuda
try{
$secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$response = null;
$reCaptcha = new ReCaptcha($secret);
if($_POST["g-recaptcha-response"]){
$response = $reCaptcha->verifyResponse(
$_SERVER["REMOTE_ADDR"],
$_POST["g-recaptcha-response"]
);
}
}catch(exception $e){
echo "Ocorreu um erro de conexão com o ReCaptcha.<p>".$e->getFile()."</p><p>".$e->getLine()."</p><p>".$e->getMessage();
}
if ($response != null && $response->success) {
echo 'Sucesso, o cara passou pelo captcha, agora eu pego os dados do form para cadastrar no bd :)';
}
else{
echo 'Poxa cara, o que custa você responder o captcha corretamente?';
sleep(5);
header("Location: ArquivoQueTemTelaDeCadastro.php ou html ");
//o cara não passou no captcha no if acima então vai voltar para tela de cadastro, flws espertão...
}
Sei que pode parecer besteira, mas... você colocou o private/public key certos?