Ir ao conteúdo

Posts recomendados

Postado

Eu gostaria que não desse para fazer o cadastro até o captcha estiver feito, tentei colocar no meu código e não funcionou, cadastrou mesmo não estando marcado:


 

<<?php

  require 'database.php';

  $message = '';

  if (!empty($_POST['nome']) && !empty($_POST['cpf']) && !empty($_POST['email']) && !empty($_POST['telefone']) && !empty($_POST['password']) && !empty($_POST['captcha'])) {
    $captcha = $_POST['g-recaptcha'];
    $secret = 'A Chave no caso';
  if(!$captcha){
      echo "Por Favor verifique o captcha";
  }
    $sql = "INSERT INTO user (nome, cpf, email, telefone, password) VALUES (:nome, :cpf, :email, :telefone, :password)";
    $stmt = $conn->prepare($sql);
    $stmt->bindParam(':nome', $_POST['nome']);
    $stmt->bindParam(':cpf', $_POST['cpf']);
    $stmt->bindParam(':email', $_POST['email']);
    $stmt->bindParam(':telefone', $_POST['telefone']);
    $captcha = $_POST['g-recaptcha'];
    $secret = 'A Chave no caso';
  if(!$captcha){
      echo "Por Favor verifique o captcha";
  }
   $response = file_get_contents(
   "https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=$captcha");
   var_dump($response);
   $arr = json_decode($response, True);
   if($arr['sucess']){
       
       echo '<h3> Captcha sucesso </h3>';
   }
   else {
       echo '<h3> Erro no captcha </h3>';
   }
    $password = password_hash($_POST['password'], PASSWORD_BCRYPT);
    $stmt->bindParam(':password', $password);
 
    if ($stmt->execute()) {
      $message = 'Successfully created new user';
    } else {
      $message = 'Sorry there must have been an issue creating your account';
    }
  }

?>>



HTML (Parte do captcha)



<<script src="https://www.google.com/recaptcha/api.js?render=_reCAPTCHA_site_key"></script>

                    <div class="g-recaptcha" data-sitekey="A chave no caso"></div>
                    <div class="container-login100-form-btn p-t-25">
                        <button input id='submit' type="submit" value='Submit' disabled="true" class="login100-form-btn">
                            Registrar
                        </button>
                        
                    </div>>

Agradeço desde já

Postado

@zShandow Bom amigo validar um Recaptcha não é só verificar se um valor existe no Input do Recaptcha, você tem que fazer um request para o Google, passando o valor que veio dentro do Input para que eles poção verificar se realmente o recaptcha é valido e foi feito.

 

Eu crie uma função para verifica o Recaptcha:

function validar_recaptcha($x)
{
    $data = [];
    $data['secret'] = ""; // GOOGLE API key
    $data['response'] = $x; // Valor que veio do input recaptcha
    $data = http_build_query($data);
    $url = 'https://www.google.com/recaptcha/api/siteverify';
	
    $curl = curl_init();                 
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    curl_setopt($curl, CURLOPT_HEADER, false);
	
	$json = curl_exec($curl);
	
    curl_close($curl);
	
    $json = json_decode($json, true);
	
    if($json['success'] == true)
	{
		return(true);
    }
	
    return(false);
}

Você pode usar ela como base!

Postado
4 minutos atrás, GabrielSennaMs disse:

@zShandow Bom amigo validar um Recaptcha não é só verificar se um valor existe no Input do Recaptcha, você tem que fazer um request para o Google, passando o valor que veio dentro do Input para que eles poção verificar se realmente o recaptcha é valido e foi feito.

 

Eu crie uma função para verifica o Recaptcha:


function validar_recaptcha($x)
{
    $data = [];
    $data['secret'] = ""; // GOOGLE API key
    $data['response'] = $x; // Valor que veio do input recaptcha
    $data = http_build_query($data);
    $url = 'https://www.google.com/recaptcha/api/siteverify';
	
    $curl = curl_init();                 
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    curl_setopt($curl, CURLOPT_HEADER, false);
	
	$json = curl_exec($curl);
	
    curl_close($curl);
	
    $json = json_decode($json, true);
	
    if($json['success'] == true)
	{
		return(true);
    }
	
    return(false);
}

Você pode usar ela como base!

eu coloco essa função em que parte do php?

Postado

@zShandow 

 

Bom eu dei uma olhada melhor no seu código e notei o real problema, eu achei que o problema estava na verificação do recaptcha, mas o real problema está no seu código! Você verifica o recaptcha, porém você não para a execução do seu script, assim ele mesmo com o recaptcha invalido ele continua a executar o script.

 

Exemplo:

<?php

	require 'database.php';
  
	function validar_recaptcha($x)
	{
		$data = [];
		$data['secret'] = ""; // GOOGLE API key
		$data['response'] = $x; // Valor que veio do input recaptcha
		$data = http_build_query($data);
		$url = 'https://www.google.com/recaptcha/api/siteverify';
		
		$curl = curl_init();                 
		curl_setopt($curl, CURLOPT_URL, $url);
		curl_setopt($curl, CURLOPT_POST, true);
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
		curl_setopt($curl, CURLOPT_HEADER, false);
		
		$json = curl_exec($curl);
		
		curl_close($curl);
		
		$json = json_decode($json, true);
		
		if($json['success'] == true)
		{
			return(true);
		}
		
		return(false);
	}

	$message = '';

	if (
		!empty($_POST['nome']) && 
		!empty($_POST['cpf']) && 
		!empty($_POST['email']) && 
		!empty($_POST['telefone']) && 
		!empty($_POST['password']) && 
		!empty($_POST['captcha']))
	{
		if (!validar_recaptcha($captcha))
		{
			echo "Por Favor verifique o captcha";
			exit();
		}
		
		$sql = "INSERT INTO user (nome, cpf, email, telefone, password) VALUES (:nome, :cpf, :email, :telefone, :password)";
		$stmt = $conn->prepare($sql);
		$stmt->bindParam(':nome', $_POST['nome']);
		$stmt->bindParam(':cpf', $_POST['cpf']);
		$stmt->bindParam(':email', $_POST['email']);
		$stmt->bindParam(':telefone', $_POST['telefone']);		
		$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
		$stmt->bindParam(':password', $password);
	 
		if ($stmt->execute())
		{
			$message = 'Successfully created new user';
		}
		else
		{
			$message = 'Sorry there must have been an issue creating your account';
		}
		exit();
	}
	exit();

 

Agora usando o exit(); ele vai para de executar o script caso o recaptcha seja inválido.

 

Postado
11 minutos atrás, GabrielSennaMs disse:

@zShandow 

 

Bom eu dei uma olhada melhor no seu código e notei o real problema, eu achei que o problema estava na verificação do recaptcha, mas o real problema está no seu código! Você verifica o recaptcha, porém você não para a execução do seu script, assim ele mesmo com o recaptcha invalido ele continua a executar o script.

 

Exemplo:


<?php

	require 'database.php';
  
	function validar_recaptcha($x)
	{
		$data = [];
		$data['secret'] = ""; // GOOGLE API key
		$data['response'] = $x; // Valor que veio do input recaptcha
		$data = http_build_query($data);
		$url = 'https://www.google.com/recaptcha/api/siteverify';
		
		$curl = curl_init();                 
		curl_setopt($curl, CURLOPT_URL, $url);
		curl_setopt($curl, CURLOPT_POST, true);
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
		curl_setopt($curl, CURLOPT_HEADER, false);
		
		$json = curl_exec($curl);
		
		curl_close($curl);
		
		$json = json_decode($json, true);
		
		if($json['success'] == true)
		{
			return(true);
		}
		
		return(false);
	}

	$message = '';

	if (
		!empty($_POST['nome']) && 
		!empty($_POST['cpf']) && 
		!empty($_POST['email']) && 
		!empty($_POST['telefone']) && 
		!empty($_POST['password']) && 
		!empty($_POST['captcha']))
	{
		if (!validar_recaptcha($captcha))
		{
			echo "Por Favor verifique o captcha";
			exit();
		}
		
		$sql = "INSERT INTO user (nome, cpf, email, telefone, password) VALUES (:nome, :cpf, :email, :telefone, :password)";
		$stmt = $conn->prepare($sql);
		$stmt->bindParam(':nome', $_POST['nome']);
		$stmt->bindParam(':cpf', $_POST['cpf']);
		$stmt->bindParam(':email', $_POST['email']);
		$stmt->bindParam(':telefone', $_POST['telefone']);		
		$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
		$stmt->bindParam(':password', $password);
	 
		if ($stmt->execute())
		{
			$message = 'Successfully created new user';
		}
		else
		{
			$message = 'Sorry there must have been an issue creating your account';
		}
		exit();
	}
	exit();

 

Agora usando o exit(); ele vai para de executar o script caso o recaptcha seja inválido.

 

Troquei meu php por esse e ta branca a tela de signup, consegue me chamar no dm pfv?

<?php

	require 'database.php';
  
	function validar_recaptcha($x)
	{
		$data = [];
		$data['secret'] = ""; // GOOGLE API key
		$data['response'] = $x; // Valor que veio do input recaptcha
		$data = http_build_query($data);
		$url = 'https://www.google.com/recaptcha/api/siteverify';
		
		$curl = curl_init();                 
		curl_setopt($curl, CURLOPT_URL, $url);
		curl_setopt($curl, CURLOPT_POST, true);
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
		curl_setopt($curl, CURLOPT_HEADER, false);
		
		$json = curl_exec($curl);
		
		curl_close($curl);
		
		$json = json_decode($json, true);
		
		if($json['success'] == true)
		{
			return(true);
		}
		
		return(false);
	}

	$message = '';

	if (
		!empty($_POST['nome']) && 
		!empty($_POST['cpf']) && 
		!empty($_POST['email']) && 
		!empty($_POST['telefone']) && 
		!empty($_POST['password']) && 
		!empty($_POST['captcha']))
	{
		if (!validar_recaptcha($captcha))
		{
			echo "Por Favor verifique o captcha";
			exit();
		}
		
		$sql = "INSERT INTO user (nome, cpf, email, telefone, password) VALUES (:nome, :cpf, :email, :telefone, :password)";
		$stmt = $conn->prepare($sql);
		$stmt->bindParam(':nome', $_POST['nome']);
		$stmt->bindParam(':cpf', $_POST['cpf']);
		$stmt->bindParam(':email', $_POST['email']);
		$stmt->bindParam(':telefone', $_POST['telefone']);		
		$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
		$stmt->bindParam(':password', $password);
	 
		if ($stmt->execute())
		{
			$message = 'Successfully created new user';
		}
		else
		{
			$message = 'Sorry there must have been an issue creating your account';
		}
		exit();
	}
	exit();
	?>

 

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