Jump to content
Sign in to follow this  
safas

Recaptcha Google não valida formulario

Recommended Posts

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";

# the response from reCAPTCHA
$resp = null;
# the error code from reCAPTCHA, if any
$error = null;

# was there a reCAPTCHA response?
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 =)

Share this post


Link to post
Share on other sites
$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'

Share this post


Link to post
Share on other sites

Sei que pode parecer besteira, mas... você colocou o private/public key certos?

 

Sim, coloquei tudo certo, só aqui que substitui por xxx ....rs

Share this post


Link to post
Share on other sites
$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? =(

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites


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...

}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By RafaelTOF
      Boa noite amigos,
       
      estava matutando aqui sobre a eficiencia do recaptcha em um sistema de login.
       
      sou leigo no assunto, mas penso da seguinte forma.
       
      ex:
      O recaptcha é colocado na pagina "login.php", essa pagina contem o formulario que sera exibido para o usuario e chama a "verifica.php" para pegar os dados e consultar.
       
      ai que entra minha duvida,
       
      sabendo que o submit ira enviar os dados para a pagina "veriica.php", eu poderia criar um formulariozinho na minha maquina sem recaptcha e inserir dados a vida toda sem passar pelo recaptcha, somente colocando no meu submit "/endereçocompleto/verifica.php "... 
       
      está certo isso ou tem mais algum mecanismo de defesa que eu não conheço?
       
      neste caso o bloqueio por armazenamento de ip direto no "verifica.php" não seria muito mais eficiente do que o recaptcha?
       
      para ser seguro, a verificação teria que ser feita na mesma pagina onde esta o recaptcha, teria que usar recaptcha junto a outro meio de defesa por armazenamento ou so recactcha é seguro e eu nãop entendi o seu funcionamento ou configuração?
       
       
      Abraço
    • By WAD - Soluções
      Olá, estou tentando utilizar este formulário de contato com o recaptcha, porém apresenta erro que não estou conseguindo resolver.
      ERRO: Por favor faça a verificação do captcha abaixo

      Link formulário: http://cartorio1bg.com.br/teste/andre/formulario-contato.php
      PHP INFO MEU SERVIDOR: http://cartorio1bg.com.br/teste/andre/info.php
      link: error_log : http://cartorio1bg.com.br/teste/andre/error_log
       
      Arquivos necessário: 
       
      PHPMailerAutoload.php – Responsável por carregar todas as dependências da classe PHPMailer class.phpmailer.php – A classe principal do PHPMailer class.smtp.php – A classe que vai permitir você fazer envios via SMTP
      Post original deste formulário: https://wiki.dialhost.com.br/formulario-de-contato-php-captcha/

      Código HTML – formulario-contato.php
      <?php include 'envia.php'; ?> <html> <head> <meta charset="utf8"> <title>Formulário de contato</title> <!-- Aqui adiciona o script do ReCaptcha --> <script src='https://www.google.com/recaptcha/api.js'></script> <link rel="stylesheet" href="style.css"> </head> <body> <div class="container"> <h1>Este é um teste de formulário de contato</h1> <form method="POST" action="formulario-contato.php"> <label>Digite seu nome: <input type="text" name="nome" value="" placeholder="ex: João" required> </label> <label>Digite seu e-mail: <input type="email" name="email" value="" placeholder="ex: joaoclb@gmail.com" required> </label> <label>Digite o assunto: <input type="text" name="assunto" value="" placeholder="ex: orçamento" required> </label> <label>Digite sua mensagem: <input type="text" name="msg" value="" placeholder="Digite sua mensagem aqui" required> </label> <!-- Div do ReCaptcha foi adicionado no final do formulário --> <div class="g-recaptcha" data-sitekey="|*SEU-SITE-KEY*|"></div> <input class="send" type="submit"> </form> </div> </body> </html>  
      Código PHP – envia.php
       
      <?php //Defino a Chave do meu site $secret_key = '|*SEU-SECRET-KEY*|'; //Pego a validação do Captcha feita pelo usuário $recaptcha_response = $_POST['g-recaptcha-response']; // Verifico se foi feita a postagem do Captcha if(isset($recaptcha_response)){ // Valido se a ação do usuário foi correta junto ao google $answer = json_decode( file_get_contents( 'https://www.google.com/recaptcha/api/siteverify?secret='.$secret_key. '&response='.$_POST['g-recaptcha-response'] ) ); // Se a ação do usuário foi correta executo o restante do meu formulário if($answer->success) { // Carrego a classe PHPMailer através do Autoload include "PHPMailerAutoload.php"; // Instancio a classe PHPMailer $msg = new PHPMailer(); // Faço todas as configurações de SMTP para o envio da mensagem $msg->CharSet = "UTF-8"; $msg->isSMTP(); $msg->Host = '|*SMTP.SEUDOMINIO.COM.BR*|'; $msg->SMTPAuth = true; $msg->Username = '|*SEU-EMAIL@SEUDOMINIO.COM.BR*|'; $msg->Password = '|*SUA-SENHA*|'; $msg->Port = 587; $msg->SMTPAutoTLS = false; $msg->AuthType = 'PLAIN'; //Defino o remetente da mensagem $msg->setFrom('|*SEU-EMAIL@SEUDOMINIO.COM.BR*|','|*NOME-DO-SEUEMAIL*|'); // Defino a quem esta mensagem será respondida, no caso, para o e-mail // que foi cadastrado no formulário $msg->addReplyTo($_POST['email'], $_POST['nome']); // Defino a mensagem como mensagem de texto (Ou seja não terá formatação HTML) $msg->IsHTML(false); // Adiciono o destinatário desta mensagem, no caso, //minha conta de contatos comerciais. $msg->AddAddress('|*SEU-EMAIL@SEUDOMINIO.COM.BR*|', '|*NOME-DO-SEUEMAIL*|'); // Defino o assunto que foi digitado no formulário $msg->Subject = $_POST['assunto']; // Defino a mensagem que foi digitada no formulário $msg->Body = $_POST['msg']; // Defino a mensagem alternativa que foi digitada no formulário. // Esta mensagem é utilizada para validações AntiSPAM e por isto // é muito recomendado que utilize-a $msg->AltBody = $_POST['msg']; // Faço o envio da mensagem $enviado = $msg->Send(); // Limpo todos os registros de destinatários e arquivos $msg->ClearAllRecipients(); // Caso a mensagem seja enviada com sucesso ela retornará sucesso // senão, ela retornará o erro ocorrido if ($enviado){ echo "E-mail enviado com sucesso!"; } else { echo "Não foi possível enviar o e-mail."; echo "<b>Informações do erro:</b> " . $msg->ErrorInfo; } } // Caso o Captcha não tenha sido validado //retorno uma mensagem de erro. else { echo "Por favor faça a verificação do captcha abaixo"; } }  
    • By alexandre99
      Boa noite pessoal,
      Estou com um problema aqui, inclui 2 recaptchas em minha página e eles estão funcionando corretamente, porém na hora de limpar eles (após dar o submit através do ajax) não consigo resetar o recaptcha, se eu uso o "grecaptcha.reset" ele limpa somente um recaptcha..
      Obrigado!
    • By carolkojima
      Pessoal, preciso de uma ajuda, no caso tenho dois formulários em meu site.
      Em um deles eu coloquei o recaptcha do Google, até ai blz.
      Mas se eu coloco o mesmo no outro formulário, eu não consigo.
      Tem como usar dois na mesma pagina?
    • By prestoexpress@live.com
      Bom dia povo.
       
      Tenho uma janela em meu sistema que abre um webbrowser e dentro carrega um formulario de cadastro
      porem quando carrega o documento dentro do webbrowser o RECAPTCHA nao funciona exibindo
       
      Agradeço a quem puder ajudar.
       
      Obrigado
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.