Recaptcha en formulario html

Iniciado por eugeniocol, 24 Julio 2017, 11:56 AM

0 Miembros y 2 Visitantes están viendo este tema.

eugeniocol

Hola.

En formulario de contacto me salto la opción Captcha y envía el correo del formulario sin más???? el Captcha como tal funciona ok pero no hace nada en el envió de correo del formulario.

Que código funcionaria para que el correo no se mandara sin completar el ReCaptcha ¿?

Código (php) [Seleccionar]
<?php

$mail
='micorreo@yahoo.es';


$nombre $_POST['nombre'];
$apellido $_POST['apellido'];
$telefono $_POST['telefono'];
$email $_POST['email'];
$asunto $_POST['asunto'];
$mensaje $_POST['mensaje'];
$recaptcha $_POST['g-recaptcha-responde'];

//$thank="gracias.html";

$message "
nombre:"
.$nombre."
apellido:"
.$apellido."
telefono:"
.$telefono."
email:"
.$email."
asunto:"
.$asunto."
mensaje:"
.$mensaje."";

if (
mail($mail,"Textoooooooooooooooooooooooo",$message))
//Header ("Location: $thank:");
header("Refresh: 3; URL=https://xxxxxxxxxxxxx.es/Emeil%20htlm%20Ok/gracias.html");


//Cambiar remitente correo
$cabeceras="From: <".$to."> \r\n"
$cabeceras.="Reply-To: <".$email."> \r\n";
$cabeceras .= 'MIME-Version: 1.0' "\r\n";
$cabeceras .= 'Content-type: multipart/mixed' ."\r\n";

//$cabeceras .= "From: ".$_POST["mail"]."\r\n";

mail($email$asunto$mensaje$cabeceras);


if(isset(
$_POST["g-recaptcha-responde"]) && $_POST["g-recaptcha-responde"])
{
  
var_dump($_POST);
  
$secret "6LdvCyoUxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  
$ip $_SERVER['REMOTE_ADDR'];

  
$captcha $_POST["g-recaptcha-responde"];

  
$result file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=$recaptcha&remoteip=$ip");
  
  echo 
"<br>";
  echo 
"<br>";
  echo 
"<br>";
  
var_dump($result);
  
$array json_decode($result,TRUE);  
  echo 
"<br>";

  if(
$array["success"])
  { 
     echo 
"Eres humano";
  }else{
     echo 
"Eres un robot"
}

}

?>



Un Saludo.

[.:: NauJFracT ::.]

Lo que pasa es que en ésta validación:

if(isset($_POST["g-recaptcha-responde"]) && $_POST["g-recaptcha-responde"])


Si se manda el $_POST["g-recaptcha-responde"] como ="", técnicamente, está cumpliendo ambas condiciones y puede pasar por el form.

Tendrías que validar que el captcha $_POST["g-recaptcha-responde"] fuera igual al validador de éste campo.

Un saludo!

De vuelta...

eugeniocol

perdona en esto ando muy justo, como tendria que hacer esto que me dices ???

Un Saludo.

[.:: NauJFracT ::.]

Qué estás usando? La validación de google?

De vuelta...

eugeniocol

Si, esta puesto en el php lo veras

Código (php) [Seleccionar]
$secret = "6LdvCyoUxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

Un Saludo...

eugeniocol

puff.. me estaba ilusionado en solucionar este tema, pero se que do parado en la ultima respuesta hace 5 dias je... bueno seguire esperando

Un Saludo...