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 hecho ''tal cual'' y por mi, Soukron. 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 == | ||
− | 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 25: | ||
<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 55: | ||
<?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 83: | ||
<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'': | ||
Línea 120: | Línea 102: | ||
</source> | </source> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Prueba == | == Prueba == |