Foros del Web » Programando para Internet » PHP »

validar recaptcha y redirigir

Estas en el tema de validar recaptcha y redirigir en el foro de PHP en Foros del Web. Hola a todos. Me gustaría validar un formulario con 2 campos: - Nombre - email Poder pasar el recaptcha y una vez aceptado, redirigir a ...
  #1 (permalink)  
Antiguo 03/09/2016, 18:11
 
Fecha de Ingreso: julio-2010
Ubicación: Cerca Sitges (Barcelona)
Mensajes: 98
Antigüedad: 14 años, 5 meses
Puntos: 4
validar recaptcha y redirigir

Hola a todos.

Me gustaría validar un formulario con 2 campos:

- Nombre
- email

Poder pasar el recaptcha y una vez aceptado, redirigir a 1f_ok.php para cargar los datos a la BD.


Con el código que adjunto, me hace correctamente el recaptcha, pero no me carga los datos del formulario a la BD.

Un saludo a todos y muchas gracias.



Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="en">
  3.   <head>
  4. <title>Lencería</title>
  5.   </head>
  6.  
  7.  
  8.   <body>
  9.  
  10.  
  11.  
  12. <?php
  13.  
  14. // coge la librería recaptcha
  15. require_once "../recaptchalib.php";
  16.  
  17.  
  18. // tu clave secreta
  19. $secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  20.  
  21. // respuesta vacía
  22. $response = null;
  23.  
  24. // comprueba la clave secreta
  25. $reCaptcha = new ReCaptcha($secret);
  26.  
  27.  
  28. // si se detecta la respuesta como enviada
  29. if ($_POST["g-recaptcha-response"]) {
  30. $response = $reCaptcha->verifyResponse(
  31.         $_SERVER["REMOTE_ADDR"],
  32.         $_POST["g-recaptcha-response"]
  33.     );
  34. }
  35.  ?>
  36.  
  37.  
  38.  
  39.  
  40. <?php
  41.      if ($response != null && $response->success) {
  42.         echo "<script>alert('Formulario enviado'); location.href='1f_ok.php'</script>";
  43.       } else {
  44.     ?>
  45.  
  46.  
  47.  
  48.     <form action="" method="post" enctype="multipart/form-data" name="procedim" onSubmit="MM_validateForm('nombre','mailcontacto');return document.MM_returnValue" ondblclick="Submit_seguro(this)">
  49.  
  50.       <label for="nombre">Nombre:</label>
  51.       <input name="nombre" required><br />
  52.  
  53.       <label for="mailcontacto">Email:</label>
  54.       <input name="mailcontacto" type="email" required><br />
  55.  
  56.       <div class="g-recaptcha" data-sitekey="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"></div>
  57.  
  58.       <input type="submit" value="Submit" />
  59.  
  60.  
  61.  
  62.  
  63.     </form>
  64.  
  65.  
  66.  
  67. <?php } ?>
  68.  
  69.  
  70.     <!--js-->
  71.     <script src='https://www.google.com/recaptcha/api.js'></script>
  72.  
  73.  
  74.  
  75.   </body>
  76. </html>

Última edición por rafaxusirati; 03/09/2016 a las 18:46
  #2 (permalink)  
Antiguo 03/09/2016, 19:55
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.139
Antigüedad: 13 años, 9 meses
Puntos: 171
Respuesta: validar recaptcha y redirigir

si nos estas diciendo que el trabajo lo hace bien, porque nos muestras ese codigo??... debes mostrarnos el codigo que usas para recibir y almacenar los datos enviados...
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 04/09/2016, 07:20
 
Fecha de Ingreso: julio-2010
Ubicación: Cerca Sitges (Barcelona)
Mensajes: 98
Antigüedad: 14 años, 5 meses
Puntos: 4
Respuesta: validar recaptcha y redirigir

Para simplificar el código anterior, añadí solo dos campos (nombre y email) Al validar redirige al código que adjunto a continuación (1f_ok.php)

Comentar, que este código funciona correctamente, pero al añadir el recaptcha en el código anterior, no ingresa los datos del formulario a la BD

Muchas gracias.


Código HTML:
Ver original
  1. <?php require_once('../Connections/contactos.php'); ?>
  2. <?php
  3. if (!function_exists("GetSQLValueString")) {
  4. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  5. {
  6.  if (PHP_VERSION < 6) {
  7.    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  8.  }
  9.  
  10.  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  11.  
  12.  switch ($theType) {
  13.    case "text":
  14.      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  15.      break;    
  16.    case "long":
  17.    case "int":
  18.      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  19.      break;
  20.    case "double":
  21.      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
  22.      break;
  23.    case "date":
  24.      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  25.      break;
  26.    case "defined":
  27.      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  28.      break;
  29.  }
  30.  return $theValue;
  31. }
  32. }
  33.  
  34. mysql_select_db($database_contactos, $contactos);
  35. $query_Recordset1 = "SELECT * FROM contactos";
  36. $Recordset1 = mysql_query($query_Recordset1, $contactos) or die(mysql_error());
  37. $row_Recordset1 = mysql_fetch_assoc($Recordset1);
  38. $totalRows_Recordset1 = mysql_num_rows($Recordset1);
  39. ?>
  40.  
  41.  
  42.  
  43. <?
  44. $db=mysql_connect("dbxxxxxxxx","dbxxxxxx","xxxxx",$db);
  45.    mysql_select_db("dbxxxxxxxx",$db);
  46.  
  47. $nombre=$_POST[nombre];
  48.     $apellido=$_POST[apellido];
  49.     $ciudad=$_POST[ciudad];
  50.     $comunidad=$_POST[comunidad];
  51.         $nombre_usuario=$_POST[nombre_usuario];
  52.     $password=$_POST[password];
  53.     $mailcontacto=$_POST[mailcontacto];
  54.     $mail=$_POST[mail];
  55.     $telefono=$_POST[telefono];
  56.     $telefono2=$_POST[telefono2];
  57.     $provincia=$_POST[provincia];
  58.     $Pais=$_POST[Pais];
  59.     $clave=$_POST[clave];
  60.     $foto1 = $_FILES['foto1']['name'];
  61.     $ip=$_SERVER['REMOTE_ADDR'];
  62.     $prefijo = substr(md5(uniqid(rand())),0,10);
  63.  
  64.  
  65. $uniqueID = substr(md5(uniqid(rand())),0,10);
  66. $foto1=$uniqueID.".".substr($foto1,-3);
  67.  
  68.  
  69. // "directorio" es el directorio donde vas a subir la imagen.
  70. mysql_query("insert into contactos( foto1 , foto2 ,  foto3 ,  foto4 ,  foto5 , nombre_usuario , password , mail , mailcontacto , telefono , telefono2 , nombre , apellido , comunidad , ciudad , provincia , clave , ip )
  71. values('/imagenes/_spain_$foto1','$foto2/datos internos/fotos/ico_sin_foto.gif','$foto3/datos internos/fotos/ico_sin_foto.gif','$foto4/datos internos/fotos/ico_sin_foto.gif','$foto5/datos internos/fotos/ico_sin_foto.gif','$nombre_usuario','$password','$mail','$mailcontacto','$telefono','$telefono2','$nombre','$apellido','$comunidad','$ciudad','$provincia','$clave','$ip')",$db) or die("La clave introducida, ya existe. Elige otra");  
  72.  
  73. //ahora subamos la imagen, "directorio" es el directorio donde la vas a subir.
  74. $copy = copy($_FILES['foto1']['tmp_name'], "../imagenes/_spain_".$foto1);
  75.  
  76.  
  77. ?>
  78.  
  79.  
  80.  
  81.   </div>
  82.   <!-- end #container -->
  83. </div>
  84. </body>
  85. </html>
  86. <?php
  87. mysql_free_result($Recordset1);
  88. ?>
  #4 (permalink)  
Antiguo 04/09/2016, 07:23
 
Fecha de Ingreso: julio-2010
Ubicación: Cerca Sitges (Barcelona)
Mensajes: 98
Antigüedad: 14 años, 5 meses
Puntos: 4
Respuesta: validar recaptcha y redirigir

Creo que el fallo está en el primer formulario, concretamente en el post.

Código HTML:
Ver original
  1. <?php
  2.      if ($response != null && $response->success) {
  3.         echo "<script>alert('Formulario enviado'); location.href='1f_ok.php'</script>";
  4.       } else {
  5.     ?>
  6.  
  7.  
  8.  
  9.     <form action="" method="post" enctype="multipart/form-data" name="procedim" onSubmit="MM_validateForm('nombre','mailcontacto');return document.MM_returnValue" ondblclick="Submit_seguro(this)">
  #5 (permalink)  
Antiguo 04/09/2016, 15:52
 
Fecha de Ingreso: julio-2010
Ubicación: Cerca Sitges (Barcelona)
Mensajes: 98
Antigüedad: 14 años, 5 meses
Puntos: 4
Respuesta: validar recaptcha y redirigir

Cita:
Iniciado por petit89 Ver Mensaje
si nos estas diciendo que el trabajo lo hace bien, porque nos muestras ese codigo??... debes mostrarnos el codigo que usas para recibir y almacenar los datos enviados...
Adjunto código. Gracias
  #6 (permalink)  
Antiguo 06/09/2016, 14:18
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 9 años
Puntos: 20
Respuesta: validar recaptcha y redirigir

Saludos amigo... estoy casi seguro de haber respondido esta pregunta...
Dejavu??? x.x
Yo pienso que es por la redirección que haces ( location.href='1f_ok.php' )
Ya que al hacer la redirección de esta forma, estás perdiendo lo que lleva tu formulario.
Lo que deberías hacer en todo caso es un submit del mismo..
Saludos!
  #7 (permalink)  
Antiguo 06/09/2016, 15:27
 
Fecha de Ingreso: julio-2010
Ubicación: Cerca Sitges (Barcelona)
Mensajes: 98
Antigüedad: 14 años, 5 meses
Puntos: 4
Respuesta: validar recaptcha y redirigir

realizo submit empleando este código

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="en">
  3.   <head>
  4. <title>How to Integrate Google “No CAPTCHA reCAPTCHA” on Your Website</title>
  5. <script src='https://www.google.com/recaptcha/api.js'></script>
  6.  
  7.   </head>
  8.  
  9.  
  10.   <body>
  11.  
  12.  
  13.  
  14. <?php
  15.  
  16. // coge la librería recaptcha
  17. require_once "../recaptchalib.php";
  18.  
  19.  
  20. // tu clave secreta
  21. $secret = "6LczFCkTAAAAAM96ZErJbB-l1Wv_c2e8NX1067wH";
  22.  
  23. // respuesta vacía
  24. $response = null;
  25.  
  26. // comprueba la clave secreta
  27. $reCaptcha = new ReCaptcha($secret);
  28.  
  29.  
  30. // si se detecta la respuesta como enviada
  31. if ($_POST["g-recaptcha-response"]) {
  32. $response = $reCaptcha->verifyResponse(
  33.         $_SERVER["REMOTE_ADDR"],
  34.         $_POST["g-recaptcha-response"]
  35.     );
  36. }
  37.  ?>
  38.  
  39. <?php
  40.    // assemble the message from the POST fields
  41.  
  42.    // getting the captcha
  43.    $captcha = '';
  44.    if (isset($_POST['g-recaptcha-response']))
  45.        $captcha = $_POST['g-recaptcha-response'];
  46.    echo 'captcha: '.$captcha;
  47.  
  48.    if (!$captcha)
  49.        echo 'The captcha has not been checked.';
  50.    // handling the captcha and checking if it's ok
  51.    $secret = 'XXXXXXXXXXXXXXXXXXwH';
  52.    $response = json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']), true);
  53.    var_dump($response);
  54.    // if the captcha is cleared with google, send datos and echo ok.
  55.    if ($response['success'] != false) {
  56.        // send datos
  57.        location.href='1f_ok.php'</script>";
  58.         // the echo goes back to the ajax, so the user can know if everything is ok
  59.         echo 'ok';
  60.     } else {
  61.         echo 'not ok';
  62.     }
  63. ?>
  64.  
  65.  
  66.  
  67. <form action="" method="post" enctype="multipart/form-data" name="procedim" onSubmit="MM_validateForm('nombre','mailcontacto');return document.MM_returnValue" ondblclick="Submit_seguro(this)">
  68.  
  69.  
  70.       <label for="nombre">Nombre:</label>
  71.       <input name="nombre" required><br />
  72.  
  73.       <label for="mailcontacto">Email:</label>
  74.       <input name="mailcontacto" type="email" required><br />
  75.  
  76.       <div class="g-recaptcha" data-sitekey="XXXXXXXXXXXJoC"></div>
  77.  
  78.       <input type="submit" value="Submit" />
  79.  
  80.  
  81.  
  82.  
  83.     </form>
  84.  
  85.  
  86.  
  87.  
  88. <script src='https://www.google.com/recaptcha/api.js'></script>
  89.  
  90.  
  91.  
  92. <?php
  93.      foreach ($_POST as $key => $value) {
  94.         echo '<p><strong>' . $key.':</strong> '.$value.'</p>';
  95.       }
  96.     ?>
  97.  
  98. <?php } ?>
  99.  
  100.   </body>
  101. </html>

me da error " Parse error: syntax error, unexpected '=' in /homepages/ " concretamente en

Código HTML:
Ver original
  1. // if the captcha is cleared with google, send datos and echo ok.
  2.     if ($response['success'] != false) {

Última edición por rafaxusirati; 08/09/2016 a las 03:48

Etiquetas: recaptcha
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:58.