Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: eugeniocol en 24 Julio 2017, 11:56 am



Título: Recaptcha en formulario html
Publicado por: eugeniocol en 24 Julio 2017, 11:56 am
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
  1. <?php
  2.  
  3. $mail='micorreo@yahoo.es';
  4.  
  5.  
  6. $nombre = $_POST['nombre'];
  7. $apellido = $_POST['apellido'];
  8. $telefono = $_POST['telefono'];
  9. $email = $_POST['email'];
  10. $asunto = $_POST['asunto'];
  11. $mensaje = $_POST['mensaje'];
  12. $recaptcha = $_POST['g-recaptcha-responde'];
  13.  
  14. //$thank="gracias.html";
  15.  
  16. $message = "
  17. nombre:".$nombre."
  18. apellido:".$apellido."
  19. telefono:".$telefono."
  20. email:".$email."
  21. asunto:".$asunto."
  22. mensaje:".$mensaje."";
  23.  
  24. if (mail($mail,"Textoooooooooooooooooooooooo",$message))
  25. //Header ("Location: $thank:");
  26. header("Refresh: 3; URL=https://xxxxxxxxxxxxx.es/Emeil%20htlm%20Ok/gracias.html");
  27.  
  28.  
  29. //Cambiar remitente correo
  30. $cabeceras="From: <".$to."> \r\n";
  31. $cabeceras.="Reply-To: <".$email."> \r\n";
  32. $cabeceras .= 'MIME-Version: 1.0' . "\r\n";
  33. $cabeceras .= 'Content-type: multipart/mixed' ."\r\n";
  34.  
  35. //$cabeceras .= "From: ".$_POST["mail"]."\r\n";
  36.  
  37. mail($email, $asunto, $mensaje, $cabeceras);
  38.  
  39.  
  40. if(isset($_POST["g-recaptcha-responde"]) && $_POST["g-recaptcha-responde"])
  41. {
  42.  var_dump($_POST);
  43.  $secret = "6LdvCyoUxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  44.  $ip = $_SERVER['REMOTE_ADDR'];
  45.  
  46.  $captcha = $_POST["g-recaptcha-responde"];
  47.  
  48.  $result = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=$recaptcha&remoteip=$ip");
  49.  
  50.  echo "<br>";
  51.  echo "<br>";
  52.  echo "<br>";
  53.  var_dump($result);
  54.  $array = json_decode($result,TRUE);  
  55.  echo "<br>";
  56.  
  57.  if($array["success"])
  58.  {
  59.     echo "Eres humano";
  60.  }else{
  61.     echo "Eres un robot";
  62. }
  63.  
  64. }
  65.  
  66. ?>
  67.  

Un Saludo.


Título: Re: Recaptcha en formulario html
Publicado por: [.:: NauJFracT ::.] en 6 Agosto 2017, 17:24 pm
Lo que pasa es que en ésta validación:
Código:
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!


Título: Re: Recaptcha en formulario html
Publicado por: eugeniocol en 6 Agosto 2017, 21:14 pm
perdona en esto ando muy justo, como tendria que hacer esto que me dices ???

Un Saludo.


Título: Re: Recaptcha en formulario html
Publicado por: [.:: NauJFracT ::.] en 7 Agosto 2017, 05:54 am
Qué estás usando? La validación de google?


Título: Re: Recaptcha en formulario html
Publicado por: eugeniocol en 7 Agosto 2017, 15:06 pm
Si, esta puesto en el php lo veras

Código
  1. $secret = "6LdvCyoUxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

Un Saludo...


Título: Re: Recaptcha en formulario html
Publicado por: eugeniocol en 11 Agosto 2017, 21:41 pm
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...