Ejemplo de reCAPTCHA en KumbiaPHP
De KumbiaPHP Framework Wiki
Revisión del 13:14 21 abr 2010 de Soukron (discusión | contribuciones)
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 :)
- Descargar la libreria reCAPTCHA, descomprimela y copia el fichero recaptchalib.php en /app/libs de tu arbol de directorios de KumbiaPHP.
- Si no lo has hecho ya, registrate y solicita una key de API en la web de reCAPTCHA.
- Crea el fichero recaptcha.php en app/libs/ con el siguiente contenido, sustituyendo X e Y por tus API Key obtenidas.
<?php
include ("recaptchalib.php");
$publickey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$privatekey = "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY";
?>
- Ahora creamos un controlador para el captcha:
<?php
// Incluimos el fichero con la libreria y nuestra API Key
require_once APP_PATH. '/libs/recaptcha.php';
class CaptchaController extends ApplicationController {
public function index() {
// Generamos el reCAPTCHA
$this->Captcha = recaptcha_get_html($publickey);
}
public function comprobar() {
// Comprobamos que se haya rellenado el reCAPTCHA
if ($_POST["recaptcha_response_field"]) {
// Realizamos la comprobacion
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if ($resp->is_valid) {
// Aqui seguría nuestra comprobacion del resto de los
// datos del formulario
echo "You got it!"; die;
} else {
// Capturamos el error para mostrarlo
$error = $resp->error;
}
}
// Si vienen datos de formulario, los enviamos a la vista de nuevo
if ($this->has_post('Datos')) $this->Datos = $this->post('Datos');
// Generamos un nuevo reCAPTCHA con el codigo de error obtenido
$this->Captcha = recaptcha_get_html($publickey, $error);
// Mostramos la misma vista que en el index
$this->render("index");
}
}
?>
- Por último, creamos la vista:
<b>Rellena el cuadro con tu nombre: </b>
<?php
echo form_tag('captcha/comprobar');
echo input_field_tag('DatosForm.nombre');
echo $Captcha;
echo submit_tag('Enviar datos');
?>
- Ya esta! Ahora ya puedes visitar la URL de tu controlador en http://<tuhost>/captcha y probarlo.
Saludos, Soukron