Foros del Web » Programando para Internet » PHP »

Recaptcha google, "Nos soy un robot"

Estas en el tema de Recaptcha google, "Nos soy un robot" en el foro de PHP en Foros del Web. Intentando integrar este recaptcha en mi formulario y pagina de validación, no he tenido narices a que me funcione. He mirado por todo la red, ...
  #1 (permalink)  
Antiguo 29/06/2016, 01:36
 
Fecha de Ingreso: febrero-2016
Mensajes: 36
Antigüedad: 8 años, 1 mes
Puntos: 2
Recaptcha google, "Nos soy un robot"

Intentando integrar este recaptcha en mi formulario y pagina de validación, no he tenido narices a que me funcione. He mirado por todo la red, y por aqui por los foros, pero no habido manera de que quiera funcionar.

En la parte del formulario tenemos la llamada al script de google y el div propio del dialogo de captcha dentro del form.

Y en la pagina de validación está implementado la validación por el metodo POST con el siguiente codigo:
Código PHP:
Ver original
  1. <?php
  2. $ip = $_SERVER['REMOTE_ADDR'];
  3. $secretkey = "Mi clave secreta";
  4. $captcha=$_POST[‘g-recaptcha-response’];
  5. $response = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secretkey.'&response='.$captcha.'&remoteip='.$ip);
  6.  
  7. var_dump($_POST);
  8. echo"<br/><br/>";
  9. var_dump($response);
  10. echo"<br/><br/>";
  11. $responsekeys = json_decode($response, true);
  12. echo"<br/><br/>";
  13. var_dump($responsekeys);
  14. if($responsekeys[“success”] === true){
  15.     if (isset($_POST['contactar'])) {
  16.             $email_to = "mi correo";
  17.             $email_subject = "Contacto desde la web ";
  18.             // Aquí validamos los datos ingresados por el usuario
  19.             if ((!isset($_POST['userName'])) || (!isset($_POST['userEmail'])) || (!isset($_POST['Mensaje']))) {
  20.                 include ($_SERVER['DOCUMENT_ROOT']) . '/includes/header.php';
  21.                 include ($_SERVER['DOCUMENT_ROOT']) . '/includes/enviofallido.php';
  22.                 include ($_SERVER['DOCUMENT_ROOT']) . '/includes/footer.php';
  23.                 die("No ha rellenado todos los campos del formulario");
  24.             }
  25.             $username=htmlentities($_POST['userName']);
  26.             $username=strip_tags($username);
  27.             $useremail=htmlentities($_POST['userEmail']);
  28.             $useremail=strip_tags($useremail);
  29.             $mensaje=htmlentities($mensaje);
  30.             $mensaje=strip_tags($mensaje);
  31.             $email_message = "Detalles del formulario de contacto:\n\n";
  32.             $email_message .= "Nombre: " . $username . "\n";
  33.             $email_message .= "E-mail: " . $useremail . "\n";
  34.             $email_message .= "Mensaje: " . $mensaje . "\n\n";
  35.             // Ahora se envía el e-mail usando la función mail() de PHP
  36.             $headers = 'From: '.$email_to."\r\n".'Reply-To: '.$useremail."\r\n" .'X-Mailer: PHP/' . phpversion();
  37.             @mail($email_to, $email_subject, $email_message, $headers);
  38.             include ($_SERVER['DOCUMENT_ROOT']).'/includes/header.php';
  39.             include ($_SERVER['DOCUMENT_ROOT']).'/includes/enviocorrecto.php';
  40.             include ($_SERVER['DOCUMENT_ROOT']).'/includes/footer.php';
  41.             }
  42. }
  43. else{
  44. die ("Ha habido un error con la verificación captcha introducida");
  45. }

Este mismo codigo funciona en otros sitios, pero yo no consigo que me funcione. los dominios en google estan configurados y las claves estan correctamente introducidas.
El error es que siempre me devuelve false la función file_get_contents.
Alguien tiene alguna pista?
  #2 (permalink)  
Antiguo 29/06/2016, 14:30
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 3 meses
Puntos: 20
Respuesta: Recaptcha google, "Nos soy un robot"

Hola amigo, primero que nada,
verifica que todas tus variables estén llegando correctamente, verifica que la ip se esté recuperandose de manera correcta,
Ultima sugerencia, verifica que el data-sitekey del div del captcha sea el correcto
Saludos!
  #3 (permalink)  
Antiguo 30/06/2016, 01:40
 
Fecha de Ingreso: febrero-2016
Mensajes: 36
Antigüedad: 8 años, 1 mes
Puntos: 2
Respuesta: Recaptcha google, "Nos soy un robot"

Todas las variable pasadas están correctas y verificadas. Incluso tengo la respuesta por $_POST[‘g-recaptcha-response’].

De alguna manera es como si el problema viniera de la función file_get_contents(), que devuelve false siempre.

He mirado de pasarle la ruta con las variables de diferentes formas, y siempre es lo mismo.

Hasta he llegado a pensar que haya algún problema en google al tener varias claves para diferentes dominios a mi nombre.
  #4 (permalink)  
Antiguo 30/06/2016, 08:30
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 3 meses
Puntos: 20
Respuesta: Recaptcha google, "Nos soy un robot"

Hola amigo,
si te está mandando false siempre es debido a que tus keys no están correctas..
corrobora como te comente, el data-sitekey que te proporcionó google para tu sitio ( Clave del sitio ); como dices que tienes varios sitios registrados, corrobora que tu clave secreta también empate con tu sitio que diste de alta.
Si crees que file_get_contents está fallando, tal vez podrías probar mediante curl
Saludos!
  #5 (permalink)  
Antiguo 30/06/2016, 10:07
 
Fecha de Ingreso: febrero-2016
Mensajes: 36
Antigüedad: 8 años, 1 mes
Puntos: 2
Respuesta: Recaptcha google, "Nos soy un robot"

Las claves son correctas, hasta borre las viejas y cree de nuevas y sigo con el mismo problema, todas esas cosas básicas ya están mas que remiradas.
Aparte me falla en servidor pruebas como localhost y en el servidor de hospedaje. (ambos "dominios" estan vinculados a esas claves.

Intente hacerlo funcionar con recaptcha 1.0 y tampoco lo conseguí. (Me querrán putear en google?, jajaja)

¿Con curl como seria? Tienes algún código de ejemplo por ahí?

Gracias
  #6 (permalink)  
Antiguo 30/06/2016, 10:54
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 3 meses
Puntos: 20
Respuesta: Recaptcha google, "Nos soy un robot"

Hola amigo, creo q hubo algunos cambios en las versiones de las api, quizá tendría q ver
no ando con mucho tiempo pero podrías empezar checando Aquí
De cualquier forma esperemos q alguien más comente,
Saludos!
  #7 (permalink)  
Antiguo 30/06/2016, 11:10
 
Fecha de Ingreso: febrero-2016
Mensajes: 36
Antigüedad: 8 años, 1 mes
Puntos: 2
Respuesta: Recaptcha google, "Nos soy un robot"

Definitivamente creo que debe ser un problema de la función file_get_contents.
Ni siquiera con los codigos de prueba me funciona, el resultado de la función es siempre false.
Gracias de todas formas.

Etiquetas: formulario, google, html, 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 05:44.