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> | ||
}} | }} | ||
− | |||
== Pasos previos == | == Pasos previos == | ||
− | Este ejemplo es la evolución del [http://wiki.kumbiaphp.com/Ejemplo_de_reCAPTCHA_en_KumbiaPHP anterior tutorial sobre reCaptcha]. | + | Este ejemplo es la evolución del [http://wiki.kumbiaphp.com/Ejemplo_de_reCAPTCHA_en_KumbiaPHP anterior tutorial sobre reCaptcha]. Recomiendo encarecidamente leer primero el otro para entender el funcionamiento y posteriormente leer este. |
Cosas que vamos a encontrar distintas: | 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 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 | + | * Se ha creado una segunda vista, en lugar de dejar un simple ''echo'' como hice en el tutorial anterior. |
+ | |||
== Pasos == | == Pasos == | ||
Línea 20: | Línea 20: | ||
<source lang=php > | <source lang=php > | ||
<?php | <?php | ||
− | // Incluimos el fichero con la | + | // Incluimos el fichero con la libreria |
require_once APP_PATH. '/libs/recaptchalib.php'; | require_once APP_PATH. '/libs/recaptchalib.php'; | ||
− | + | ||
− | |||
− | |||
− | |||
class reCaptcha | class reCaptcha | ||
{ | { | ||
− | + | private static $_publicKey = "6LePF7oSAAAAALYNEfbbOfRAc9lCz3LKvoKcQkwZ"; | |
− | + | private static $_privateKey = "6LePF7oSAAAAADRQBaACf7imDRSwq-kPXyZOCBCA"; | |
− | + | ||
− | + | public static function html($error = NULL) | |
− | + | { | |
− | + | return recaptcha_get_html(self::$_publicKey, $error); | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | public static function validate() | |
− | + | { | |
− | + | $ret = recaptcha_check_answer (self::$_privateKey, | |
− | + | $_SERVER['REMOTE_ADDR'], | |
− | + | $_POST['recaptcha_challenge_field'], | |
− | + | $_POST['recaptcha_response_field']); | |
− | + | ||
− | + | return $ret; | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
</source> | </source> | ||
Línea 76: | Línea 50: | ||
<?php | <?php | ||
Load::Lib("recaptcha"); | Load::Lib("recaptcha"); | ||
− | class CaptchaController extends | + | 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 ( | + | 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 ( | + | if ($this->has_post("recaptcha_response_field")) |
{ | { | ||
// Realizamos la comprobacion | // Realizamos la comprobacion | ||
− | + | $ret = reCaptcha::validate(); | |
− | $this->Datos = | + | if ($ret->is_valid) { |
− | + | $this->Datos = $this->post('Datos'); | |
+ | $this->render("validado"); | ||
} | } | ||
+ | // Enviamos el error a la vista | ||
+ | $this->previousError = $ret->error; | ||
} | } | ||
} | } | ||
Línea 101: | Línea 78: | ||
<strong>Rellena el cuadro con tu nombre: </strong> | <strong>Rellena el cuadro con tu nombre: </strong> | ||
<?php | <?php | ||
− | echo | + | echo form_tag('captcha/'); |
− | echo | + | 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 | + | echo submit_tag('Enviar datos'); |
− | |||
− | |||
?> | ?> | ||
</source> | </source> | ||
− | Y por último, para de paso mostrar el método '' | + | 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'': | ||
<source lang=php> | <source lang=php> | ||
Línea 120: | Línea 96: | ||
</source> | </source> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Prueba == | == Prueba == |