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 37: Línea 37:
 
     */
 
     */
 
     private static $_privateKey = 'TU_CLAVE_PRIVADA';   
 
     private static $_privateKey = 'TU_CLAVE_PRIVADA';   
    /**
 
    * Errores del reCaptcha
 
    */
 
    private static $_error = NULL;
 
  
 
     /**
 
     /**
 
     * Genera el HTML con el código reCaptcha
 
     * Genera el HTML con el código reCaptcha
 
     *  
 
     *  
 +
    * @param $error
 
     * @return string  
 
     * @return string  
 
     */
 
     */
     public static function html()
+
     public static function html($error = NULL)
 
     {
 
     {
         return recaptcha_get_html(self::$_publicKey, self::$_error);
+
         return recaptcha_get_html(self::$_publicKey, $error);
 
     }
 
     }
 
     /**
 
     /**
 
     * Valida que el código colocado sea el correcto
 
     * Valida que el código colocado sea el correcto
     * @return boolean
+
     * @return Response
 
     */
 
     */
     public static function isValid()
+
     public static function validate()
 
     {
 
     {
 
         $ret = recaptcha_check_answer (self::$_privateKey,
 
         $ret = recaptcha_check_answer (self::$_privateKey,
Línea 61: Línea 58:
 
                 $_POST['recaptcha_challenge_field'],
 
                 $_POST['recaptcha_challenge_field'],
 
                 $_POST['recaptcha_response_field']);
 
                 $_POST['recaptcha_response_field']);
         if ( $ret->is_valid ){
+
 
            return TRUE;
+
         return $ret;
        }else{
 
            self::$_error = $ret->error;
 
            return FALSE;
 
        }
 
 
     }
 
     }
 
}
 
}
Línea 76: Línea 69:
 
<?php
 
<?php
 
Load::Lib("recaptcha");
 
Load::Lib("recaptcha");
class CaptchaController extends AppController
+
class CaptchaController extends ApplicationController
 
{
 
{
 
         public function index()
 
         public function index()
 
         {               
 
         {               
 
// Si vienen datos de formulario, los enviamos a la vista de nuevo
 
// Si vienen datos de formulario, los enviamos a la vista de nuevo
if (Input::hasPost('Datos')) $this->Datos = Input::post('Datos');
+
if ($this->has_post('Datos')) $this->Datos = $this->post('Datos');
  
 
// Comprobamos que se haya rellenado el reCAPTCHA
 
// Comprobamos que se haya rellenado el reCAPTCHA
                 if (Input::hasPost("recaptcha_response_field"))
+
                 if ($this->has_post("recaptcha_response_field"))
 
                 {
 
                 {
 
// Realizamos la comprobacion
 
// Realizamos la comprobacion
                         if (reCaptcha::isValid() {
+
                         $ret = reCaptcha::validate();
$this->Datos = Input::post('Datos');
+
                        if ($ret->is_valid) {
View::select("validado");
+
$this->Datos = $this->post('Datos');
 +
$this->render("validado");
 
}
 
}
 +
// Enviamos el error a la vista
 +
$this->previousError = $ret->error;
 
                 }
 
                 }
 
         }
 
         }
Línea 101: Línea 97:
 
<strong>Rellena el cuadro con tu nombre: </strong>
 
<strong>Rellena el cuadro con tu nombre: </strong>
 
<?php  
 
<?php  
echo Form::open();
+
echo form_tag('captcha/');
echo Form::text('Datos.nombre');
+
echo input_field_tag('Datos.nombre');
 
 
echo reCaptcha::html();
 
  
echo Form::submit('Enviar datos');
+
// Cargamos la librería y le pedimos un código html
 +
Load::Lib("recaptcha");
 +
echo reCaptcha::html($previousError);
  
        echo Form::close();
+
echo submit_tag('Enviar datos');
 
?>
 
?>
 
</source>
 
</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.  
+
Y por último, para de paso mostrar el método ''render'' de KumbiaPHP, creamos la vista que se mostrará en cuanto validemos correctamente el captcha.  
  
 
La vista es ''app/views/captcha/validado.phtml'':
 
La vista es ''app/views/captcha/validado.phtml'':
Línea 120: Línea 116:
 
</source>
 
</source>
  
 
== Aplicando estilos ==
 
Para poder cambiar el css del captcha debemos agregar el siguiente código a nuestra app.
 
<source lang=javascript>
 
<script>
 
  var RecaptchaOptions = {
 
  theme : 'clean'  // [ red, white, blackglass, clean, custom ]
 
  };
 
</script>
 
</source>
 
A continuación agregar el siguiente código a nuestra app.
 
<source lang=css>
 
<style>
 
.recaptchatable .recaptcha_image_cell, #recaptcha_table
 
{
 
    background-color: #FFFFFF !important; /* reCaptcha widget background color */
 
}
 
#recaptcha_table
 
{
 
    border-color: #DFDFDF !important; /* reCaptcha widget border color */
 
}
 
#recaptcha_response_field
 
{
 
    border: 1px solid #CCCCCC !important; /* Text input field border color */
 
    background-color:#FFFFFF !important; /* Text input field background color */
 
}
 
</style>
 
</source>
 
Para mas información al respecto [http://wiki.recaptcha.net/ wiki de reCaptcha]
 
 
 
== Aplicando el cambio de idioma ==
 
Para poder cambiar el idioma del captcha podemos establecer el párametro lang utilizado en la API, de la siguiente manera.
 
<source lang=javascript>
 
<script>
 
var RecaptchaOptions = {
 
    lang: 'es'
 
};
 
</script>
 
</source>
 
Lo anterior traducira el captcha a español.
 
 
También podemos establecer nuestros propios textos a utilizar, agregando el siguiente codigo a nuestra app.
 
<source lang=javascript>
 
<script>
 
var RecaptchaOptions = {
 
    custom_translations : {
 
    instructions_visual :  'Escriba las dos palabras:',
 
    instructions_audio :  'Escribir lo que escucha:',
 
    play_again :          'Volver a reproducir el audio.',
 
    cant_hear_this :      'Descarga el audio en formato MP3.',
 
    visual_challenge :    'Modo Visual',
 
    audio_challenge :      'Escuchar la clave de seguridad.',
 
    refresh_btn :          'Volver a generar una clave de seguridad.',
 
    help_btn :            'Ayuda',
 
    incorrect_try_again :  'Incorrecto. Por favor, inténtelo de nuevo.'
 
},
 
    theme : 'clean'
 
};
 
</script>
 
</source>
 
  
 
== Prueba ==
 
== Prueba ==

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: