Ir ao conteúdo
  • Cadastre-se

PHP Implementação de recaptcha com problema


Posts recomendados

Boa tarde pessoal,

Possuo um formulário PHP em meu site, porém resolvi implementar o recaptcha para evitar a ação de bots.
Até ai tudo bem, consegui colocar o script no site e modifiquei o back que faz o envio dos e-mails, porém a função de envio parou de funcionar, na realidade, o if da validação do captcha não está sendo verdadeiro e por consequência ele não está fazendo nada, simplesmente o código morre antes de ser validado.
Alguém consegue me dar uma luz?
 

Código do form que está no meu index.html:

<form method="post" action="" id="formulario" onsubmit="return validaCaptcha();">
   <div class="form-group">
      <label for="InputName">Nome</label>
      <input type="text" name="nome" required="" class="form-control" id="nome"
         placeholder="Nome Completo">
   </div>
   <div class="form-group">
      <label for="InputEmail">Endereço de email</label>
      <input type="email" name="email" required="" class="form-control" id="email"
         placeholder="Email">
   </div>
   <div class="form-group">
      <label for="InputSubject">Assunto</label>
      <input type="text" name="assunto" class="form-control" id="assunto"
         placeholder="Assunto">
   </div>
   <div class="form-group">
      <label for="message-text" class="control-label">Mensagem</label>
      <textarea class="form-control" rows="4" required="" name="mensagem" id="mensagem"
         placeholder="Escreva a mensagem"></textarea>
   </div>
   <script src='https://www.google.com/recaptcha/api.js'></script>
   <div class="form-group">
      <div class="g-recaptcha" data-sitekey="6LdTRnMUAAAAAOVEJYqBy6hPdB_q1bpG88OfrmGc"></div>
   </div>
   <button type="submit" class="btn btn-primary">Enviar</button>
   <button type="reset" class="btn btn-primary">Limpar</button>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
   <script>
      function validaCaptcha() {
         if(document.querySelector('#g-recaptcha-response').value == '') {
            alert('Resolva o desafio do captcha para prosseguir!');
            return false;
         }
      }
   </script>
   <script>
      $(document).ready(function () {
        $('#formulario').submit(function() { 
          var dados = $('#formulario').serialize();
          $.ajax({
            type : 'POST',
            url  : 'sendemail.php',
            data : dados,
            dataType: 'json',
            success :  function(response){
              $('#mensagem').css('display', 'block')
              .removeClass()
              .addClass(response.tipo)
              .html('')
              .html( response.mensagem);
              $('#formulario').each (function(){
               this.reset();
            });
           }
        });
          return false;
       });
      });
   </script>
</form>

Código do sendemail.php

<?php
header('Content-type: text/html; charset=utf-8');
// Conta de Email no servidor de hospedagem
define('SERVIDOR', '[email protected]');
// Para onde será enviado o contato
define('DESTINO', '[email protected]');
// Identifica o site que foi enviada a mensagem
define('SITE', 'Roveeb');
// sua chave secreta
$secret    = "6LdTRnMUAAAAAGWRQXsQEFVx4rsxzqBcpO9Aw1w1";
// resposta vazia
$response  = null;
// verifique a chave secreta
$reCaptcha = new ReCaptcha($secret);
if ($_POST["g-recaptcha-response"]) {
    $response = $reCaptcha->verifyResponse($_SERVER["REMOTE_ADDR"], $_POST["g-recaptcha-response"]);
}
if ($response != null && $response->success) {
    if (isset($_POST)):
        $nome    = (isset($_POST['nome'])) ? $_POST['nome'] : '';
        $email   = (isset($_POST['email'])) ? $_POST['email'] : '';
        $assunto = (isset($_POST['assunto'])) ? $_POST['assunto'] : '';
        $msg     = (isset($_POST['mensagem'])) ? $_POST['mensagem'] : '';
    // Valida se foram preenchidos todos os campos
        if (empty($nome) || empty($email) || empty($assunto) || empty($msg)):
            $array = array(
                'tipo' => 'alert alert-danger',
                'mensagem' => 'Preencher todo os campos obrigatórios(*)!'
            );
            echo json_encode($array);
        else:
            if (empty($assunto)):
                $assunto = "Contato enviado pelo site " . SITE;
            endif;
            // Monta a mensagem do email
            $mensagem .= "Contato enviado pelo site " . SITE . "\n";
            $mensagem .= "__________________________________________________________\n";
            $mensagem .= "Nome do Contato: " . $nome . "\n";
            $mensagem .= "E-mail do Contato: " . $email . "\n";
            $mensagem .= "__________________________________________________________\n";
            $mensagem .= "Mensagem: \n" . $msg . "\n";
            // Envia o e-mail e captura o retorno
            $retorno = EnviaEmail(DESTINO, $assunto, $mensagem);
            // Conforme o retorno da função exibe a mensagem para o usuário
            if ($retorno):
                $array = array(
                    'tipo' => 'alert alert-success',
                    'mensagem' => 'Sua mensagem foi enviada com sucesso!'
                );
                echo json_encode($array);
            else:
                $array = array(
                    'tipo' => 'alert alert-danger',
                    'mensagem' => 'Infelizmente houve um erro ao enviar sua mensagem!'
                );
                echo json_encode($array);
            endif;
        endif;
    endif;
    // Função para envio de e-mail usando a função nativa do PHP mail()
    function EnviaEmail($para, $assunto, $mensagem)
    {
        $headers = "From: " . SERVIDOR . "\n";
        $headers .= "Reply-To: $para\n";
        $headers .= "Subject: $assunto\n";
        $headers .= "Return-Path: " . SERVIDOR . "\n";
        $headers .= "MIME-Version: 1.0\n";
        $headers .= "X-Priority: 3\n";
        $headers .= "Content-Type: text/html; charset=UTF-8\n";
        $retorno = mail($para, $assunto, nl2br($mensagem), $headers);
        return $retorno;
    }
}

 

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