Edición de «Ejemplo de reCAPTCHA en KumbiaPHP»
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 3: | Línea 3: | ||
|texto ='''Este Artículo cumple con todos los quererimientos de los Kumbieros.'''<br /> | |texto ='''Este Artículo cumple con todos los quererimientos de los Kumbieros.'''<br /> | ||
}} | }} | ||
− | |||
'''Nota previa''' Este ejemplo esta sacado de la documentacion de reCAPTCHA y adaptado a un controlador/vista de KumbiaPHP de forma básica. Se puede mejorar creando un helper, pero queda fuera del ejemplo :) | '''Nota previa''' Este ejemplo esta sacado de la documentacion de reCAPTCHA y adaptado a un controlador/vista de KumbiaPHP de forma básica. Se puede mejorar creando un helper, pero queda fuera del ejemplo :) | ||
+ | == Pasos previos == | ||
* Descargar la libreria [http://code.google.com/p/recaptcha/downloads/list?q=label:phplib-Latest reCAPTCHA], descomprimela y copia el fichero '''recaptchalib.php''' en ''/app/libs'' de tu arbol de directorios de KumbiaPHP. | * Descargar la libreria [http://code.google.com/p/recaptcha/downloads/list?q=label:phplib-Latest reCAPTCHA], descomprimela y copia el fichero '''recaptchalib.php''' en ''/app/libs'' de tu arbol de directorios de KumbiaPHP. | ||
− | |||
+ | * Si no lo has hecho ya, [https://admin.recaptcha.net/accounts/signup/?next= registrate] y solicita una key de API en la web de reCAPTCHA. | ||
== Pasos == | == Pasos == | ||
− | * Creamos un controlador | + | * Creamos un controlador para el captcha: |
<source lang=php > | <source lang=php > | ||
<?php | <?php | ||
Línea 39: | Línea 39: | ||
// Aqui seguría nuestra comprobacion del resto de los | // Aqui seguría nuestra comprobacion del resto de los | ||
// datos del formulario | // datos del formulario | ||
− | + | echo "You got it!"; die; | |
− | echo " | ||
} else { | } else { | ||
// Capturamos el error para mostrarlo | // Capturamos el error para mostrarlo | ||
Línea 61: | Línea 60: | ||
− | * Por último, creamos la vista | + | * Por último, creamos la vista: |
+ | |||
<source lang=php > | <source lang=php > | ||
<strong>Rellena el cuadro con tu nombre: </strong> | <strong>Rellena el cuadro con tu nombre: </strong> | ||
<?php | <?php | ||
echo form_tag('captcha/comprobar'); | echo form_tag('captcha/comprobar'); | ||
− | echo input_field_tag(' | + | echo input_field_tag('DatosForm.nombre'); |
echo $Captcha; | echo $Captcha; | ||
echo submit_tag('Enviar datos'); | echo submit_tag('Enviar datos'); | ||
?> | ?> | ||
</source> | </source> | ||
− | |||
== Prueba == | == Prueba == | ||
* Ya esta! Ahora ya puedes visitar la URL de tu controlador en http://''<tuhost>''/captcha y probarlo. | * Ya esta! Ahora ya puedes visitar la URL de tu controlador en http://''<tuhost>''/captcha y probarlo. | ||
− | |||
== Explicacion == | == Explicacion == | ||
He metido los comentarios que creo necesarios, pero por si acaso, el funcionamiento es el siguiente: | He metido los comentarios que creo necesarios, pero por si acaso, el funcionamiento es el siguiente: | ||
# Se carga la liberia, para tener las funciones disponibles. No usamos Load::Lib() porque KumbiaPHP espera que haya una clase definida, y no es el caso de la librería reCaptcha. Si en un futuro los desarrolladores de reCaptcha proporcionan una clase, lo haremos con Load::Lib(), pero el objetivo es usar la clase tal cual nos la den. | # Se carga la liberia, para tener las funciones disponibles. No usamos Load::Lib() porque KumbiaPHP espera que haya una clase definida, y no es el caso de la librería reCaptcha. Si en un futuro los desarrolladores de reCaptcha proporcionan una clase, lo haremos con Load::Lib(), pero el objetivo es usar la clase tal cual nos la den. | ||
+ | |||
# Generamos en index() el HTML necesario, y lo mostramos en la vista. | # Generamos en index() el HTML necesario, y lo mostramos en la vista. | ||
+ | |||
# El formulario nos envia a comprobar(), la cual comprueba si hemos recibido una respuesta (vía POST) del formulario. | # El formulario nos envia a comprobar(), la cual comprueba si hemos recibido una respuesta (vía POST) del formulario. | ||
+ | |||
# De haberla recibido, pedimos al API de reCapcha que nos compruebe la respuesta, El resultado lo tenemos en ''is_valid'', y el mensaje de error (si lo hubiera) en ''error''. | # De haberla recibido, pedimos al API de reCapcha que nos compruebe la respuesta, El resultado lo tenemos en ''is_valid'', y el mensaje de error (si lo hubiera) en ''error''. | ||
+ | |||
# Si la respuesta es válida, hariamos un redirect(), un route(), o grabariamos una sesion, cookie, etc. para seguir con nuestra aplicación. En caso contrario seguimos la ejecución. | # Si la respuesta es válida, hariamos un redirect(), un route(), o grabariamos una sesion, cookie, etc. para seguir con nuestra aplicación. En caso contrario seguimos la ejecución. | ||
+ | |||
# Posteriomente, si tuvieramos más datos del formulario (nombre, apellidos, telefono, mail, etc), los volvemos a cargar para que la vista los tenga. Esto lo hago porque si se rellenan 10 datos, pero falla el captcha, que el usuario no tenga que volver a rellenar todo otra vez. | # Posteriomente, si tuvieramos más datos del formulario (nombre, apellidos, telefono, mail, etc), los volvemos a cargar para que la vista los tenga. Esto lo hago porque si se rellenan 10 datos, pero falla el captcha, que el usuario no tenga que volver a rellenar todo otra vez. | ||
+ | |||
# Por último, generamos otro captcha para mostrarlo como siguiente prueba y llamamos a la misma vista, para no repetir. | # Por último, generamos otro captcha para mostrarlo como siguiente prueba y llamamos a la misma vista, para no repetir. | ||
− | |||
Espero que esté claro! | Espero que esté claro! |