Ir ao conteúdo
  • Cadastre-se

PHP Incluir Recaptcha em formulario Html com validação PHP


Posts recomendados

Boa tarde Pessoal. Estou me arriscando a inserir um Recaptcha do google no meu site para evitar os Spams que tenho recebido diariamente.

Fiz o cadastro no Google e gerei as chaves. 

 

A dúvida é:  Como devo inserir no código PHP os parametros do Recaptcha sem interferir no processo atual de validação? Isso é possível?

Os parametros que peguei de um Tutorial foram:

 

// incluir a funcionalidade do recaptcha
require_once "recaptchalib.php";

// definir a chave secreta
$secret = "INSIRA-AQUI-A-CHAVE-SECRETA";

// verificar a chave secreta
$response = null;
$reCaptcha = new ReCaptcha($secret);

if ($_POST["g-recaptcha-response"]) { 
  $response = $reCaptcha->verifyResponse($_SERVER["REMOTE_ADDR"], $_POST["g-recaptcha-response"]);
}

// deu tudo certo?
if ($response != null && $response->success) {
    // processar o formulario
}

 

E eu gostaria de incluí-lo dentro do meu arquivo PHP que faz a validação do formulário: 

 

<?php
if(isset($_POST['email']))
{
session_cache_limiter( 'nocache' );
$subject = "Contato Site"; // Subject of your email
$to = "endereçodeemail";  //Recipient's E-mail
$origem = $_POST['email'];
$subject_reply = "Re: ".$subject;
$to_reply = $_POST['email'];

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";
$headers .= "From: " . $_POST['name']."<".$_POST['email'].">"."\r\n"; 

$headers_reply = "MIME-Version: 1.0\r\n";
$headers_reply .= "Content-type: text/html; charset=UTF-8\r\n";
$headers_reply .= "From: " . $to ."\r\n";

$msg = "Nome: "  .$_POST['name']    ."<br>\n";
$msg .= "Email: "  .$_POST['email']    ."<br>\n";
$msg .= "Telefone: "  .$_POST['phone']    ."<br>\n";
$msg .= "Assunto: "  .$_POST['subject']    ."<br>\n";
$msg .= "Mensagem: "  .$_POST['message']    ."\n"; 
$message_reply = "Agradecemos o contato"."<br>\n".""; 
    
if (@mail($to, $subject, $msg, $headers,"-r".$origem))
{
    mail($to_reply, $subject_reply, $message_reply, $headers_reply,"-r".$origem);
    // Transfer the value 'sent' to ajax function for showing success message.
    echo 'sent';
}
else
{
    // Transfer the value 'failed' to ajax function for showing error message.
    echo 'failed';
}

}
?>

 

O formulário da página html está assim:


 

<form id='contact_form' name="enqueryForm" method="post" action="enviar.php">
                                <div class="col-md-6">
                                <input type="text" class="form-control" id="name"  name="name" placeholder="Nome">
                                </div>
                                <div class="col-md-6">
                                 <input id="email" type="email" class="form-control" name="email" placeholder="E-mail">
                                </div>
                                <div class="col-md-6">
                                <input type="text" class="form-control" maxlength="15" placeholder="Telefone - (11) 1111-1111" onkeypress='return SomenteNumero(event)'name="phone" id="phone" />
                                </div>
                                <div class="col-md-6">
                                <input type="text" class="form-control" id="subject" name="subject" placeholder="Assunto">
                                </div>
                                <div class="col-md-12">
                                 <textarea id="message" class="form-control" rows="8" name="message" placeholder="Mensagem"></textarea>
                                </div>
                                
                                <div class="form-group col-md-12">
                <div id="mail_success" class="success" style="display:none;"> Mensagem enviada! </div>
                <div id="mail_fail" class="error" style="display:none;"> Erro no envio. Tente novamente. </div>
              </div>

                <div class="g-recaptcha" data-sitekey="CHAVE"></div>


              <div class="send-button text-center">
                <button id="send_message" class="btn" name="submit" type="submit">Enviar</button>
              </div>
                                </form>

 

Agradeço demais quem puder me ajudar!

 

Link para o comentário
Compartilhar em outros sites

Apenas inserir o código "($response != null && $response->success" no "if" do seu código.

 

 

Ficaria algo assim:

 

// incluir a funcionalidade do recaptcha

require_once "recaptchalib.php";



// definir a chave secreta

$secret = "INSIRA-AQUI-A-CHAVE-SECRETA";



// verificar a chave secreta

$response = null;

$reCaptcha = new ReCaptcha($secret);



if ($_POST["g-recaptcha-response"]) { 

  $response = $reCaptcha->verifyResponse($_SERVER["REMOTE_ADDR"], $_POST["g-recaptcha-response"]);

}



// deu tudo certo?

if(isset($_POST['email']) && $response != null && $response->success)

 

...

 

Este if acima substituiria o seu if da primeira linha, e todo o código restante permaneceria igual.

 

Este if não tem um else, você pode adicionar para informar o erro, se foi o email ou o captcha, mas aí vai depender da sua lógica.

 

1 hora atrás, themartins disse:
if(isset($_POST['email']))

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!