Diferencia entre revisiones de «Ejemplo de reCAPTCHA en KumbiaPHP»

De KumbiaPHP Framework Wiki
Línea 1: Línea 1:
'''Nota previa''' Este ejemplo esta sacado de la documentacion de reCAPTCHA y adaptado a un controlador/vista de KumbiaPHP. Seguramente, la inclusion de la librería se podrá hacer de alguna otra forma con funciones própias de KumbiaPHP, pero esta es mi forma de hacerlo con los conocimientos que tengo de KumbiaPHP.  
+
'''Nota previa''' Este ejemplo esta sacado de la documentacion de reCAPTCHA y adaptado a un controlador/vista de KumbiaPHP de forma básica. Seguramente, la inclusion de la librería se podrá hacer de alguna otra forma con funciones própias de KumbiaPHP, pero esta es mi forma de hacerlo con los conocimientos que tengo de KumbiaPHP.  
  
  
Línea 22: Línea 22:
 
<?php
 
<?php
 
class CaptchaController extends ApplicationController {
 
class CaptchaController extends ApplicationController {
 +
// Incluimos el fichero con la libreria y nuestra API Key
 +
require_once APP_PATH. '/libs/recaptcha.php';
 +
 
public function index() {  
 
public function index() {  
// Incluimos el fichero con la libreria y nuestra API Key
 
require_once APP_PATH. '/libs/recaptcha.php';
 
 
// Generamos el reCAPTCHA
 
// Generamos el reCAPTCHA
 
$this->Captcha = recaptcha_get_html($publickey);
 
$this->Captcha = recaptcha_get_html($publickey);
 
}  
 
}  
  
public function comprobar() {  
+
public function comprobar() {
// Incluimos el fichero con la libreria y nuestra API Key
 
require_once APP_PATH. '/libs/recaptcha.php';
 
 
 
// Comprobamos que se haya rellenado el reCAPTCHA
 
// Comprobamos que se haya rellenado el reCAPTCHA
 
if ($_POST["recaptcha_response_field"]) {
 
if ($_POST["recaptcha_response_field"]) {

Revisión del 13:12 21 abr 2010

Nota previa Este ejemplo esta sacado de la documentacion de reCAPTCHA y adaptado a un controlador/vista de KumbiaPHP de forma básica. Seguramente, la inclusion de la librería se podrá hacer de alguna otra forma con funciones própias de KumbiaPHP, pero esta es mi forma de hacerlo con los conocimientos que tengo de KumbiaPHP.


  • 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
class CaptchaController extends ApplicationController {
	// Incluimos el fichero con la libreria y nuestra API Key
	require_once APP_PATH. '/libs/recaptcha.php';

	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