Implementación de Recapcha en Formulario PHP con Validación

  • Autor Autor Facundo
  • Fecha de inicio Fecha de inicio
F

Facundo

Xi
Hola, estoy intentando implementar recapcha en una web, y no se bien como en PHP hacer para que envía un formulario verificando el capcha

El código es algo como:



PHP:
<?require_once('recaptchalib.php');
//Llaves de la captcha
$captcha_publickey = "6LcyXXXXXXXXXXXXXXXXXX";
$captcha_privatekey = "6LcyXXXXXXXXXXXXXXXXXXXX";$error_captcha=null;
if ($_POST){   $captcha_respuesta = recaptcha_check_answer ($captcha_privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);   

if (!$captcha_respuesta->is_valid) {      
//El código de validación de la imagen está mal escrito.      
echo "Has escrito mal el texto de Verificación. Vuelve a Intentarlo !";      
$error_captcha = $captcha_respuesta->error;   
}
}?>

Y en el formulario:

Insertar CODE, HTML o PHP:
formulario...

<?
echo recaptcha_get_html($captcha_publickey, $error_captcha);
?>
<input type="submit" name="send" value="bla bla" class="submit" /></label></p>

Se que está mal acá arriba, porque si no ingreso el capcha, se envia bien el formulario ¬¬

Desde ya Gracias !

PD: en "if (!$captcha_respuesta->is_valid)" la negación está bien puesta ? O podría probar usar "is_invalid"... 😀
 
Hola Facundo, voy hacer de cuenta que en el mismo archivo del formulario se procesan los datos.

PHP:
<?php
require_once('recaptchalib.php');
    //Llaves de la captcha
    $captcha_publickey = "xxx";
    $captcha_privatekey = "xxx";
    $error_captcha=null;
    if ($_POST){
        $captcha_respuesta = recaptcha_check_answer ($captcha_privatekey,
        $_SERVER["REMOTE_ADDR"],
        $_POST["recaptcha_challenge_field"],
        $_POST["recaptcha_response_field"]);
        if ($captcha_respuesta->is_valid) {
            //Aqui lo que se ejecuta si el captcha es correcto
        }else{
           // El codigo esta mal escrito.
        }
    }
?>

Y en el formulario, puedes ubicarlo debajo o antes del submit:
PHP:
<form>
<?php echo recaptcha_get_html($captcha_publickey, $error_captcha); ?>
</form>

Saludos.
 
Última edición:
Si, en el mismo archivo. Pero sigue sin funcionar, fijate: Acortar URLs largas

El cuadro aparece y todo, pero al momento de enviar (si no salta error por agregar mal la URL) acorta la URL lo más bien sin siquiera haber llenado el captcha.

Estuve probando un montón de formas, hasta el ejemplo que trae las librerias de recaptcha pero sigue sin andar.

Hasta probé que en la parte donde uno ingresó mal las letras, se vuelva a cargar la página con

PHP:
echo "<script>window.location='index.php'</script>";

Pero tampoco 🙁
 
Hola, debes verificar que nada se ejecute antes sin verificar que se haya validado el captcha. No debe porque fallar. Copia tu código aqui para ver que esta mal.

Saludos.

- - - Actualizado - - -

Acabo de verificar amenos por lo que veo, el archivo create.php procesa el formulario, si es así, la forma de implementar el Captcha es distinto, este debe ir en el archivo create.php y en el formulario debes incluir:
Insertar CODE, HTML o PHP:
require_once('recaptchalib.php');

Saludos.
 
El código lo puse en create.php

PHP:
<?php
require_once('recaptchalib.php');
    //Llaves de la captcha
    $captcha_publickey = "xxx";
    $captcha_privatekey = "xxx";
    $error_captcha=null;
    if ($_POST){
        $captcha_respuesta = recaptcha_check_answer ($captcha_privatekey,
        $_SERVER["REMOTE_ADDR"],
        $_POST["recaptcha_challenge_field"],
        $_POST["recaptcha_response_field"]);
        if ($captcha_respuesta->is_valid) {
            //Código que crea la URL, la muestra, etc...
        }else{
           // Error.
        }
    }
?>

Ahora, en index.php como hago para que se muestre la caja del captcha ? Porque al sacar el código de arriba del index.php y ponerlo en create.php se corta la página a la mitad mostrando:

To use reCAPTCHA you must get an API key from https://www.google.com/recaptcha/admin/create


Saludos!
 
Hola, muy bien, ahora vamos a solucionarlo:

Busca esta linea:
PHP:
<form>
<?php echo recaptcha_get_html($captcha_publickey, $error_captcha); ?>
</form>

Reemplázalo de la siguiente forma:
PHP:
 <?php require_once('recaptchalib.php'); $publickey = "xxx";
    echo recaptcha_get_html($publickey);
?>
Debe trabajar a la perfección, de igual modo hasta aqui te puedo ayudar, no se como tienes el resto del código, saludos.
 
Genio, anduvo 😀

Por la ayuda, si querés más tarde escribite alguna review de algún sitio tuyo, me la enviás por MP en formato HTML y la publico en Caidos de La Realidad 😀

Saludos !
 
Puedes guardar el código de error al mostrar en una variable y luego imprimirla dentro de tu código html, esto mas que todo por estetica.

PHP:
<?php
require_once('recaptchalib.php');
    //Llaves de la captcha
    $captcha_publickey = "xxx";
    $captcha_privatekey = "xxx";
    $error_captcha=null;
    if ($_POST){
        $captcha_respuesta = recaptcha_check_answer ($captcha_privatekey,
        $_SERVER["REMOTE_ADDR"],
        $_POST["recaptcha_challenge_field"],
        $_POST["recaptcha_response_field"]);
        if ($captcha_respuesta->is_valid) {
            //Código que crea la URL, la muestra, etc...
        }else{
           $error = "<div class='xx'>El código de validación de la imagen está mal escrito.</div>";
        }
    }
?>

Y lo imprimes en algún lado de tu plantilla create.php
PHP:
<?php echo $error; ?>

Genio, anduvo 😀
Por la ayuda, si querés más tarde escribite alguna review de algún sitio tuyo, me la enviás por MP en formato HTML y la publico en Caidos de La Realidad 😀
Saludos !

No te preocupes, estamos para ayudar!!
 
Atrás
Arriba