Ir ao conteúdo

Posts recomendados

Postado

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!

 

Postado

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']))

 

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