I cannot validate registration with Recaptcha using PHP

Asked

Viewed 34 times

1

I am trying to do a recaptcha validation in which the user can only register after responding correct the captcha. but I’m not getting it

front end code

<?php
session_start();
?>
<!DOCTYPE html>
<html lang="pt">

<head>
    <!-- Required meta tags-->
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="cadastro_astral_mistico">
    <meta name="author" content="ThalisDEV">
    <meta name="keywords" content="ThalisDEV">
    <!--Captcha-->
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
    <!-- Title Page-->
    <title>Cadastro Astral Mistico</title>

    <!-- Icons font CSS-->
    <link href="vendor/mdi-font/css/material-design-iconic-font.min.css" rel="stylesheet" media="all">
    <link href="vendor/font-awesome-4.7/css/font-awesome.min.css" rel="stylesheet" media="all">
    <!-- CSS only -->
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
    <!-- Font special for pages-->
    <link href="https://fonts.googleapis.com/css?family=Poppins:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
    <!-- Vendor CSS-->
    <link href="vendor/select2/select2.min.css" rel="stylesheet" media="all">
    <link href="vendor/datepicker/daterangepicker.css" rel="stylesheet" media="all">
    <!-- Main CSS-->
    <link href="css/main.css" rel="stylesheet" media="all">
    <!-- Adicionando JQuery -->
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"
    integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
    crossorigin="anonymous">
    </script>

    <!-- script para busca de CEP-->
    <script>

        $(document).ready(function() {

            function limpa_formulário_cep() {
                // Limpa valores do formulário de cep.
                $("#logradouro").val("");
                $("#bairro").val("");
                $("#localidade").val("");
                $("#uf").val("");
                $("#complemento").val("");
            }
            
            //Quando o campo cep perde o foco.
            $("#cep").blur(function() {

                //Nova variável "cep" somente com dígitos.
                var cep = $(this).val().replace(/\D/g, '');

                //Verifica se campo cep possui valor informado.
                if (cep != "") {

                    //Expressão regular para validar o CEP.
                    var validacep = /^[0-9]{8}$/;

                    //Valida o formato do CEP.
                    if(validacep.test(cep)) {

                        //Preenche os campos com "..." enquanto consulta webservice.
                        $("#logradouro").val("...");
                        $("#bairro").val("...");
                        $("#localidade").val("...");
                        $("#uf").val("...");
                        $("#complemento").val("...");


                        //Consulta o webservice viacep.com.br/
                        $.getJSON("https://viacep.com.br/ws/"+ cep +"/json/?callback=?", function(dados) {

                            if (!("erro" in dados)) {
                                //Atualiza os campos com os valores da consulta.
                                $("#logradouro").val(dados.logradouro);
                                $("#bairro").val(dados.bairro);
                                $("#localidade").val(dados.localidade);
                                $("#uf").val(dados.uf);
                                $("#complemento").val(dados.complemento);
                            } //end if.
                            else {
                                //CEP pesquisado não foi encontrado.
                                limpa_formulário_cep();
                                alert("CEP não encontrado.");
                            }
                        });
                    } //end if.
                    else {
                        //cep é inválido.
                        limpa_formulário_cep();
                        alert("Formato de CEP inválido.");
                    }
                } //end if.
                else {
                    //cep sem valor, limpa formulário.
                    limpa_formulário_cep();
                }
            });
        });

    </script>
<!--script para formatação automatica de data-->
<script>
    function mascaraData( campo, e ){
    var kC = (document.all) ? event.keyCode : e.keyCode;
    var data = campo.value;
    
    if( kC!=8 && kC!=46 )
    {
        if( data.length==2 )
        {
            campo.value = data += '/';
        }
        else if( data.length==5 )
        {
            campo.value = data += '/';
        }
        else
            campo.value = data;
    }
}
</script>

</head>

<body>
    <div class="page-wrapper p-t-180 p-b-100 font-poppins">
        <div class="wrapper wrapper--w780">
            <div class="card card-3">
                <div class="card-heading"></div>
                <div class="card-body">
                <p style="color: red; text-align:center;">
                    <?php
                        if(isset($_SESSION['CadastroLog'])){
                            echo $_SESSION['CadastroLog'];
                            unset($_SESSION['CadastroLog']);
                        }
                    ?>
                    </p>
                    <h2 class="title">Formulario de Cadastro</h2>
                    <form action="" method="post">
                        <div class="input-group">
                            <input class="input--style-3" type="text" placeholder="Nome Completo" name="nome"required>
                        </div>
                        <div class="input-group">
                            <input class="input--style-3 js-datepicker" type="datetime" placeholder="Data de Nascimento" name="data_nascimento" onkeypress="mascaraData( this, event )" required>
                            <i class="zmdi zmdi-calendar-note input-icon js-btn-calendar "></i>
                        </div>
                        <div class="input-group ">
                            <div class="rs-select2 js-select-simple select--no-search ">
                                <label for="genero" style="color: white;">Escolha seu Genero!</label>
                                <select name="genero" required>
                                    <option>--------------------</option>
                                    <option>Nao Binario</option>
                                    <option>Masculino</option>
                                    <option>Feminino</option>
                                    <option>Homossexual</option>
                                    <option>Transsexual</option>
                                </select>
                                <div class="select-dropdown" name="genero"></div>
                            </div>
                        </div>
                        <div class="input-group ">
                        <input class="input--style-3 " type="email " placeholder="Email" name="email" required>
                        </div>
                        <div class="input-group ">
                        <input style="color: white; " class="input--style-3 " type="number" name="cpf" pattern="\d{3}\.?\d{3}\.?\d{3}-?\d{2}" placeholder="Digite seu CPF "required>
                        </div>
                        <div class="input-group ">
                        <input style="color: white; " class="input--style-3 " type="number" name="celular" pattern="[1-9]{2}[9][1-9]\d{7}" placeholder="Digite seu celular "required>
                        </div>
                        <div class="input-group ">
                        <input class="input--style-3 "type="text" placeholder="cep " id="cep" name="cep" required/>
                        </div>
                        <div class="input-group ">
                        <input class="input--style-3 "type="text" placeholder="Rua " name="logradouro" id="logradouro" required/>
                       </div>
                        <div class="input-group ">
                        <input class="input--style-3 " type="text" placeholder="número" name="numero" required/>
                        </div>
                        <div class="input-group ">
                        <input class="input--style-3 " type="complemento" placeholder="complemento" name="complemento" id="complemento" required/>
                        </div>
                        <div class="input-group ">
                        <input class="input--style-3 "type="text" placeholder="bairro " id="bairro" name="bairro" required/>
                        </div>
                        <div class="input-group" style="color: white;">
                        <div class="form-check">
                        <input class="form-check-input" type="radio" name="tipo_conta" value="0" required>
                        <label class="form-check-label" for="exampleRadios1">
                        Sou Consulente
                        </label>
                        </div>
                        <div class="form-check">
                        <input class="form-check-input" type="radio" name="tipo_conta" value="1">
                        <label class="form-check-label" for="exampleRadios2">
                        Forneço serviços holisticos
                        </label>
                        </div>
                        </div>
                        <div class="input-group ">
                        <input class="input--style-3 " id="localidade" type="text" placeholder="Cidade " name="localidade" required/>
                        </div>
                        <div class="input-group ">
                        <input class="input--style-3 " type="text " placeholder="Usuario " name="usuario" required>
                        </div>
                        <div class="input-group ">
                        <input class="input--style-3 " type="password" placeholder="Senha " name="senha" required>
                        </div>
                        <div class="input-group ">
                        <div class="rs-select2 js-select-simple select--no-search ">
                        <label for="uf" style="color: white;">Estados</label>
                        <select name="uf" id="uf" required>
                        <option>--------------------</option>
                        <option value="AC">Acre</option>
                        <option value="AL">Alagoas</option>
                        <option value="AP">Amapá</option>
                        <option value="AM">Amazonas</option>
                        <option value="BA">Bahia</option>
                        <option value="CE">Ceará</option>
                        <option value="DF">Distrito Federal</option>
                        <option value="ES">Espírito Santo</option>
                        <option value="GO">Goiás</option>
                        <option value="MA">Maranhão</option>
                        <option value="MT">Mato Grosso</option>
                        <option value="MS">Mato Grosso do Sul</option>
                        <option value="MG">Minas Gerais</option>
                        <option value="PA">Pará</option>
                        <option value="PB">Paraíba</option>
                        <option value="PR">Paraná</option>
                        <option value="PE">Pernambuco</option>
                        <option value="PI">Piauí</option>
                        <option value="RJ">Rio de Janeiro</option>
                        <option value="RN">Rio Grande do Norte</option>
                        <option value="RS">Rio Grande do Sul</option>
                        <option value="RO">Rondônia</option>
                        <option value="RR">Roraima</option>
                        <option value="SC">Santa Catarina</option>
                        <option value="SP">São Paulo</option>
                        <option value="SE">Sergipe</option>
                        <option value="TO">Tocantins</option>
                        </select>
                        <div class="select-dropdown "></div>
                        </div>
                        </div>
                        </div>
                    <div style="text-align: center; ">
                    <button class="btn btn--pill btn--green " type="submit " name="submit">Cadastrar</button>
                    </div>
                    <br>
                    <div class="g-recaptcha" data-sitekey="6Lf2YjEaAAAAAOq1D-LaAKWX5GL8TFe5tN1s5pq4"></div>
                    </form>
                </div>
            </div>
        </div>

    <!-- Jquery JS-->
    <script src="vendor/jquery/jquery.min.js "></script>
    <!-- Vendor JS-->
    <script src="vendor/select2/select2.min.js "></script>
    <script src="vendor/datepicker/moment.min.js "></script>
    <script src="vendor/datepicker/daterangepicker.js "></script>

    <!-- Main JS-->
    <script src="js/global.js "></script>
    <!-- JavaScript Bundle with Popper -->
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script>

</body>

</html>

back end code

<?php
session_start();
//DADOS DE CONEXÃO.
include("conexao.php");
//validação do captcha
$captcha = $_POST['g-recaptcha-response'];

if($captcha != ''){
    $secreto = '6Lf2YjEaAAAAAK2MIzqb_lVjMDSCqguYruWvXmcZ';
    $ip = $_SERVER['REMOTE_ADDR'];
    $var = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secreto&response=$captcha&remoteip=$ip");
    $resposta = json_decode($var, true);

    if($resposta['success']){

        //opções criptografia de senha.
        $options['salt'] = '';
        $options['cost'] = 11;

        //RECEBENDO OS DADOS PREENCHIDOS DO FORMULÁRIO !
        $nome = mysqli_real_escape_string($conexao,$_POST['nome']);
        $data_nascimento = mysqli_real_escape_string($conexao,$_POST['data_nascimento']);
        $genero = mysqli_real_escape_string($conexao,$_POST['genero']);
        $email = mysqli_real_escape_string($conexao,$_POST['email']);
        $tipo_conta = mysqli_real_escape_string($conexao,$_POST['tipo_conta']);
        $cpf = mysqli_real_escape_string($conexao,$_POST['cpf']);
        $celular = mysqli_real_escape_string($conexao,$_POST['celular']);
        $usuario = mysqli_real_escape_string($conexao,$_POST['usuario']);
        $senha = mysqli_real_escape_string($conexao,$_POST['senha']);
        $senha = password_hash($senha, PASSWORD_BCRYPT, $options);
        $cep = mysqli_real_escape_string($conexao,$_POST['cep']);
        $logradouro = mysqli_real_escape_string($conexao,$_POST['logradouro']);
        $numero = mysqli_real_escape_string($conexao,$_POST['numero']);
        $complemento = mysqli_real_escape_string($conexao,$_POST['complemento']);
        $bairro = mysqli_real_escape_string($conexao,$_POST['bairro']);
        $uf = mysqli_real_escape_string($conexao,$_POST['uf']);
        $localidade = mysqli_real_escape_string($conexao,$_POST['email']);

        //Verificando dados duplicados.
        $sql_busca_usuario = $conexao->query("SELECT usuario FROM usuarios WHERE usuario = '$usuario'");
        $sql_busca_email = $conexao->query("SELECT email FROM usuarios WHERE email = '$email'");

        //comparação de dados duplicados
        if(mysqli_num_rows($sql_busca_usuario) > 0){
            $_SESSION['CadastroLog'] = "Esse Usuario já Existe!";
            header("Location: cadastro.php");
            exit();
        }elseif(mysqli_num_rows($sql_busca_email) > 0){
            $_SESSION['CadastroLog'] = "Esse E-mail já esta cadastrado!";
            header("Location: cadastro.php");
            exit();
        }else{
            $sql = "INSERT INTO usuarios (nome, data_nascimento, genero, email, tipo_conta, cpf, celular, usuario, senha, cep, logradouro, numero, complemento, bairro, uf, localidade) VALUES ";
            $sql .= "('$nome', '$data_nascimento', '$genero', '$email', '$tipo_conta', '$cpf', '$celular', '$usuario', '$senha', '$cep', '$logradouro', '$numero', '$complemento', '$bairro', '$uf', '$localidade')"; 

            if($conexao->query($sql) === TRUE){
                echo"conexão bem sucedida"; 
            }else{
                echo"Erro: " .$sql . "<br>" . $conexao ->error;
            }
        }
    }
}
?>

OBS: I snippeted the codes because I was going out of formatting all the time. I’m trying on that logic. but if anyone knows any other way to validate captcha I’m open to suggestions.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.