Hola a todos, hoy vamos a integrar un componente captcha en un proyecto de cakePHP. Es cierto que hay dos o tres por la red, pero la peculiaridad de este es que es un captcha totalmente visual (podéis ver aquí el ejemplo, recordad que tenéis que rellenar los dos campos):

Es decir que tendremos que arrastrar en el caso superior mediante el ratón el reloj desde donde está hasta el círculo quedando de la siguiente forma para que pueda continuarse adecuadamente…

Pasos a seguir:
1- En la función del controlador donde queramos utilizarlo añadimos las siguientes líneas de código
/*Para el captcha*/
$rand = rand(0,4);
$_SESSION['captcha'] = $rand;
$this->set('rand',$rand);
2- En la función del controlador donde queramos recibir los datos incluiremos estas líneas:
/* this compare captcha's number from POST and SESSION */
if($_SERVER['REQUEST_METHOD'] == "POST" && $this->data['captcha'] && $this->data['captcha'] == $_SESSION['captcha']){
/* this line makes session free, we recommend you to keep it */
unset($_SESSION['captcha']);
} elseif($_SERVER['REQUEST_METHOD'] == "POST" && !$this->data['captcha']){
// Aquí redireccionaremos a donde queramos que vaya en
// este caso erróneo
$this->redirect('/');
}
3-En la vista(en mi caso en la plantilla) añadimos las siguientes líneas en el header
<link rel="stylesheet" href="/css/captcha.css" type="text/css" />
<script type="text/javascript" src="/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="/js/jquery-ui-1.7.2.custom.min.js"></script>
<script type="text/javascript" src="/js/jquery.captcha.js"></script>
<?php if(isset($rand)){
echo '<script type="text/javascript">
$j(function() {
$j(".ajax-fc-container").captcha({
url: '.$rand.',
borderColor: "silver",
text: "Arrastra <span>scissors</span> al círculo.",
formId:"formulario" //aquí el id del formulario
});
});
</script>';
}?>
4-Dentro de la vista donde queramos que se dibuje el captcha añadiremos las siguientes líneas (así de sencillo!!)
<!-- Begin of captcha -->
<div class="ajax-fc-container">You must enable javascript to see captcha here!
</div>
<!-- End of captcha -->
5-Para que funcione será necesario copiar los archivos siguientes en las carpetas que indicamos:
- captcha.css en la carpeta webroot/css.
- Las imágenes que se encuentran en la carpeta imgs del zip en la carpeta webroot/imgs (son 13 imágenes, entre ellas están las imágenes entre las cuáles será necesario escoger)
- Los archivos iepngfix.htc, jquery-1.3.2.min.js, jquery-ui-1.7.2.custom.min.js y jquery.captcha.js en la carpeta webroot/js.
6-(Opcional)Modificar la línea 37 del archivo jquery.captcha.js para cambiar el name del input que se generará name=\”data[captcha]\”
Aquí os dejo dichos archivos para que os los descarguéis. Dejar claro también que este componente no lo cree yo, sino estos señores, sólo me he limitado a adaptarlo a cakePHP y a explicar cómo se utiliza en español