reCAPTCHA - textarea g-recaptcha-response no funciona

Tengo el siguiente problema con una página que funcionó reCAPTCHA v2 y ya no funciona

Por alguna razón, el $ _POST ['g-recaptcha-response'] llega vacío al archivo que valida los datos después de presentarlos en el formulario

En el panel de usuario www.google.com/recaptcha/ la web se añade correctamente, y las teclas se verifican para ser correctas. El punto es que cuando usted comprueba el Yo no soy un cheque robot, el área de texto g-recaptcha-response debe ser actualizado con el código que viene de Google, pero este código permanece en blanco.

    

Y esto creo que es la razón por la que llega vacía

el código de mi forma es

            
" required autofocus/>
" required />
">

y uno de los PHP a los que llegan los datos

if (isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])) {


    // Google reCAPTCHA API secret key
    $secretKey = $reCAPTCHA_secret_key;

    // Verify the reCAPTCHA response
    $verifyResponse = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']);

    // Decode json data
    $responseKeys = json_decode($verifyResponse, true);

    // should return JSON with success as true
    if ($responseKeys["success"]) {

        //Captcha correcto
        $validoCaptcha = true;
    } else {
        // eres un robot, asi que terminamos
        $validoCaptcha = false;
         Header("Location: $url_vot/index.php?error_login=10");
         exit;
    }
  }else{
    echo "no llego" .$_POST['g-recaptcha-response'];
    
  }
} 

Obviamente, imprime "no alcanzar" y no muestra el post porque está vacío

He mirado otras preguntas similares y he probado las soluciones pero no resuelven el problema para mí

Para el diseño, estoy usando bootstrap, aunque no creo que influya

¿Puede alguien ayudarme? Por favor. Estoy atascado por días y no entiendo por qué no actualiza ese texto

Pregunta hecha hace 3 años, 4 meses, 13 días - Por gitguru


2 Respuestas:

  • El problema que estás experimentando con reCAPTCHA podría estar relacionado con el hecho de que tienes el campo de respuesta de reCAPTCHA oculto mediante CSS en tu código HTML. El campo de respuesta de reCAPTCHA es esencial para que la validación funcione correctamente.

    Aquí hay algunas sugerencias para resolver el problema:

    • Elimina la propiedad "display: none;" del campo de respuesta de reCAPTCHA en tu código HTML. Esto asegurará que el campo sea visible y pueda actualizarse con el código de respuesta de reCAPTCHA.
    • Verifica que estás incluyendo correctamente la clave del sitio de reCAPTCHA en el atributo "data-sitekey" de la etiqueta con la clase "g-recaptcha".
    • Asegúrate de que la librería de reCAPTCHA se esté cargando correctamente en tu página. En tu código HTML, comprueba que la URL de la librería es correcta.

    Una vez realizadas estas modificaciones, prueba nuevamente y verifica si el campo de respuesta de reCAPTCHA se actualiza correctamente con el código de respuesta de reCAPTCHA al hacer clic en el "No soy un robot". Si el problema persiste, revisa también la consola del navegador en busca de posibles mensajes de error relacionados con reCAPTCHA.

    Espero que estas sugerencias te ayuden a solucionar el problema. ¡Déjame saber si necesitas más ayuda!

    Respondida el Dec 18, 2020 a las 10:51 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Posibles causas y soluciones:

    1. Clave del sitio y clave secreta incorrectas:

    Verifica que estés usando la clave del sitio y la clave secreta correctas proporcionadas por Google reCAPTCHA.

    2. Biblioteca de reCAPTCHA no cargada:

    Asegúrate de que la biblioteca de reCAPTCHA se esté cargando correctamente en tu página. El código debe ser:

    html
    
    

    3. Atributo display: oculto:

    El elemento <textarea> con el atributo g-recaptcha-response debe tener el atributo display establecido en visible o bloque.

    4. Bloqueo del navegador:

    Algunos navegadores, como Safari, pueden bloquear el acceso al script de reCAPTCHA. Intenta desactivar los bloqueadores de anuncios o las extensiones de privacidad.

    5. Problema de CORS:

    Si estás utilizando una clave de sitio multidominio, asegúrate de que el dominio de tu sitio esté incluido en la lista de dominios permitidos en la configuración de reCAPTCHA.

    6. Tamaño del elemento oculto:

    El elemento <textarea> debe tener un tamaño (ancho y alto) visible para que reCAPTCHA funcione correctamente. No lo ocultes mediante CSS.

    7. Secuencias de comandos de terceros en conflicto:

    Las secuencias de comandos de terceros, como los administradores de anuncios o los rastreadores de análisis, pueden interferir con reCAPTCHA. Intenta deshabilitar temporalmente estas secuencias de comandos para ver si el problema desaparece.

    8. reCAPTCHA mal implementado:

    Verifica que hayas implementado reCAPTCHA correctamente siguiendo las instrucciones oficiales.

    9. Servidor proxy:

    Si estás utilizando un servidor proxy, asegúrate de que permita el acceso a los servidores de Google.

    10. Verificación de robots:

    Intenta verificar si tu sitio está bloqueado por los robots de Google utilizando la herramienta de verificación de robots.

    Si has probado todas estas soluciones y el problema persiste, te recomiendo que te pongas en contacto con el soporte de Google reCAPTCHA para obtener asistencia adicional.

    Respondida el Dec 18, 2020 a las 10:56 - por Gemini

    Votos positivos: 0 | Votos negativos: 0