Edición de «Ejemplo de reCAPTCHA en KumbiaPHP v2»

De KumbiaPHP Framework Wiki

Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así efectuar la reversión.

Revisión actual Tu texto
Línea 5: Línea 5:
 
}}
 
}}
  
== Pasos previos ==
+
Definitely pent topic matter, appreciate it for selective information. dfafcfgddedbfkge
Este ejemplo es la evolución del [http://wiki.kumbiaphp.com/Ejemplo_de_reCAPTCHA_en_KumbiaPHP anterior tutorial sobre reCaptcha]. Se recomienda leer el tutorial anterior para entender el funcionamiento básico y posteriormente leer este.
 
 
 
Cosas que vamos a encontrar distintas:
 
* Se ha creado una librería para abstraer las funciones de generar un captcha y para comprobar una contestación. Asi podremos usarla desde otros controladores.
 
* Se ha creado una segunda vista, en lugar de dejar un simple ''echo'' como hizo en el tutorial anterior.
 
 
 
== Pasos ==
 
En el [http://wiki.kumbiaphp.com/Ejemplo_de_reCAPTCHA_en_KumbiaPHP anterior tutorial sobre reCaptcha] hacíamos toda la ''logica'' del reCaptcha en el controlador, lo cual, si solo era un único controlador no pasaba nada, pero de necesitarlo en más controladores, teníamos problemas.
 
 
 
Esta vez vamos a crear una librería que se encargue de todo: almacenar las keys, generar el HTML y validar la entrada del usuario. Dicho de otra forma, hemos creado una segunda capa de abstracción entre nuestra aplicación y reCaptcha: la primera es el propio API de reCaptcha y la segunda nuestra librería.
 
 
 
Creamos la libreria, ''app/libs/recaptcha.php'':
 
<source lang=php >
 
<?php
 
// Incluimos el fichero con la librería
 
require_once APP_PATH. '/libs/recaptchalib.php';
 
/**
 
* Clase para consumir el servicio anti-spam reCaptcha
 
* @author Soukron
 
*/
 
class reCaptcha
 
{
 
    /**
 
    * Clave Publica reCaptcha
 
    * @var string
 
    */
 
    private static $_publicKey  = 'TU_CLAVE_PUBLICA';
 
    /**
 
    * Clave Privada reCaptcha
 
    */
 
    private static $_privateKey = 'TU_CLAVE_PRIVADA'; 
 
    /**
 
    * Errores del reCaptcha
 
    */
 
    private static $_error = NULL;
 
 
 
    /**
 
    * Genera el HTML con el código reCaptcha
 
    *
 
    * @return string
 
    */
 
    public static function html()
 
    {
 
        return recaptcha_get_html(self::$_publicKey, self::$_error);
 
    }
 
    /**
 
    * Valida que el código colocado sea el correcto
 
    * @return boolean
 
    */
 
    public static function isValid()
 
    {
 
        $ret = recaptcha_check_answer (self::$_privateKey,
 
                $_SERVER['REMOTE_ADDR'],
 
                $_POST['recaptcha_challenge_field'],
 
                $_POST['recaptcha_response_field']);
 
        if ( $ret->is_valid ){
 
            return TRUE;
 
        }else{
 
            self::$_error = $ret->error;
 
            return FALSE;
 
        }
 
    }
 
}
 
</source>
 
 
 
 
 
Con lo que nuestro controlador se simplifica de la siguiente forma ''app/controllers/captcha_controller.php'':
 
<source lang=php >
 
<?php
 
Load::Lib("recaptcha");
 
class CaptchaController extends AppController
 
{
 
        public function index()
 
        {             
 
// Si vienen datos de formulario, los enviamos a la vista de nuevo
 
if (Input::hasPost('Datos')) $this->Datos = Input::post('Datos');
 
 
 
// Comprobamos que se haya rellenado el reCAPTCHA
 
                if (Input::hasPost("recaptcha_response_field"))
 
                {
 
// Realizamos la comprobacion
 
                        if (reCaptcha::isValid() {
 
$this->Datos = Input::post('Datos');
 
View::select("validado");
 
}
 
                }
 
        }
 
}
 
</source>
 
 
 
 
 
En la vista, usaremos el otro método de la librería. La vista queda como sigue, app/views/captcha/index.phtml:
 
<source lang=php >
 
<strong>Rellena el cuadro con tu nombre: </strong>
 
<?php
 
echo Form::open();
 
echo Form::text('Datos.nombre');
 
 
 
echo reCaptcha::html();
 
 
 
echo Form::submit('Enviar datos');
 
 
 
        echo Form::close();
 
?>
 
</source>
 
 
 
 
 
Y por último, para de paso mostrar el método ''View::select()'' de KumbiaPHP, creamos la vista que se mostrará en cuanto validemos correctamente el captcha.
 
 
 
La vista es ''app/views/captcha/validado.phtml'':
 
<source lang=php>
 
<strong>Hola <?php echo $Datos['nombre']; ?>, tu formulario ha sido enviado!</strong>
 
</source>
 
  
 +
Very nice site!
  
 
== Aplicando estilos ==
 
== Aplicando estilos ==

Ten en cuenta que todas las contribuciones a KumbiaPHP Framework Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Proyecto:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar Ayuda de edición (se abre en una ventana nueva)

Plantilla usada en esta página: