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 4: Línea 4:
 
<span style="font-size:90%">Puedes tomar la información que aqui se encuentra pero no nos hacemos responsable</span>
 
<span style="font-size:90%">Puedes tomar la información que aqui se encuentra pero no nos hacemos responsable</span>
 
}}
 
}}
 +
== Aviso ==
 +
Este tutorial esta publicado ''tal cual''. En el momento de la publicación, puedo decir que el código puesto '''funciona 100%''' ya que lo he validado yo mismo.
 +
 +
Si durante la vida del artículo sufre modificaciones que impiden su correcto funcionamiento, no puedo hacerme responsable. Digo esto porque en algún otro tutorial hecho, he visto cambios que han hecho que dejara de funcionar.
 +
  
 
== Pasos previos ==
 
== Pasos previos ==
Línea 37: Línea 42:
 
     */
 
     */
 
     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 63:
 
                 $_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 74:
 
<?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 102:
 
<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();
+
// Cargamos la librería y le pedimos un código html
 +
Load::Lib("recaptcha");
 +
echo reCaptcha::html($previousError);
  
echo Form::submit('Enviar datos');
+
echo submit_tag('Enviar datos');
 
 
        echo Form::close();
 
 
?>
 
?>
 
</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 121:
 
</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: