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.