Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/08/2008, 12:53
gabyrsh
 
Fecha de Ingreso: mayo-2005
Mensajes: 257
Antigüedad: 19 años
Puntos: 1
Implemetentar Captcha en Zend Framework

Hola chicos!
Necesito implementar la herramienta de Captcha en mi formulario HTML (no utilizó Zend_Form.) Vi que el Zend 1.6 ya lo va a traer, pero todavia no estan en la version final, Asique opté por hacerlo de otro modo.

Buscando en la web, encontré el siguiente tutorial:
http://blog.ekini.net/2007/10/29/sim...end-framework/

Entonces empezé a probarlo, pero me surgió el siguiente problema.
Primero, intento hacer, que al ir a un controlador de mi sitio, ejemplo:
Código:
localhost/misitio/administracion/generarcaptcha
me devuelva una imagen (en este caso va a ser la imagen del captcha).

El problema, es que, no me devuelve ninguna imagen. En Firefox al ir a mi url, solo me devuelve, la url impresa.
Encambio si uso el Explorer de Windows, lo que puedo observar, es que me devuelve mi Layout, y en el centro (donde va el content) hay todos simbolos raros (Pienso que esa es la imagen, pero no me funciona el Header).

La verdad nose que puede ser, aqui les va el codigo:

Código:
class Administracion_CaptchaController extends Zend_Controller_Action {
	#
	public function init() #
	{
		#
		$this->_helper->viewRenderer->setNoRender(true);
		#
	}
	#
	

	#
	public function generatecaptchaAction() #
	{
		#
		

		#
		//Let’s generate a totally random string using md5
		#
		$md5_hash = md5 ( rand ( 0, 999 ) );
		#
		//We don’t need a 32 character long string so we trim it down to 5
		#
		$security_code = substr ( $md5_hash, 15, 5 );
		#
		
		echo $security_code;
		#
		//$_SESSION [captcha_code] = $security_code;
		#
		

		#
		//Set the image width and height
		#
		$width = 100;
		#
		$height = 20;
		#
		

		#
		//Create the image resource
		#
		$image = ImageCreate ( $width, $height );
		#
		

		#
		//We are making three colors, white, black and gray
		#
		$white = ImageColorAllocate ( $image, 255, 255, 255 );
		#
		$black = ImageColorAllocate ( $image, 0, 0, 0 );
		#
		$grey = ImageColorAllocate ( $image, 204, 204, 204 );
		#
		

		#
		//Make the background black
		#
		ImageFill ( $image, 0, 0, $black );
		#
		

		#
		//Add randomly generated string in white to the image
		#
		ImageString ( $image, 3, 30, 3, $security_code, $white );
		#
		

		#
		//Throw in some lines to make it a little bit harder for any bots to break
		#
		ImageRectangle ( $image, 0, 0, $width - 1, $height - 1, $grey );
		#
		imageline ( $image, 0, $height / 2, $width, $height / 2, $grey );
		#
		imageline ( $image, $width / 2, 0, $width / 2, $height, $grey );
		#
		

		#
		//Tell the browser what kind of file is come in
		#
		header ( "Content-Type: image/jpeg" );
		#
		

		#
		//Output the newly created image in jpeg format
		#
		ImageJpeg ( $image );
		#
	}

}

Alguna idea? Tal vez no sea el mejor modo de utilizar Captcha., si es asi que me recomiendan?

Desde ya, Muchas Gracias,