Welcome, Guest. Register Now!
   
Mark Forums Read Mark Forums Read Mark Forums Read


Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 02-26-2008, 11:44 AM
Junior Member
 
Join Date: Feb 2008
Posts: 1
Default Captcha is not working

I am trying to make the captcha work with the login form. It works without Zend, doesnt work with Zend.

Here is the controller class:


Code:
class ImagegeneratorController extends Zend_Controller_Action
{
    public function init()
    {
        $this->_helper->viewRenderer->setNoRender();
    }

    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);

        $_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);
    }
}
Let me know how to make it work or does it work in Zend?

Sridhar
Signature Solutions

www.signatrue.co.in
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-22-2008, 07:59 PM
Junior Member
 
Join Date: Feb 2008
Posts: 17
Default

Here's my working code:

Code:
<?php
class CaptchaController extends Zend_Controller_Action {

	function init() {
		$this->_helper->viewRenderer->setNoRender();
		$this->_helper->viewRenderer->setNoController();
	}

	public function pngAction() {
		//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);

        //$_SESSION[‘captcha_code’] = $security_code;

        //Set the image width and height
        $width = 200;
        $height = 40; 

        //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/png"); 

        //Output the newly created image
        imagepng($image);
	}
}
?>
I still need to do some work on the captcha itself, and use Zend_Session, but this should be a good starting point for somebody.

Then I just implemented the image as a CSS background-image as an easy work around Zend_Form. Checking the input against the session variable created by the captcha script would be an easy validator to add also.

Hope this helps
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 11:50 AM.