NYCPHP Meetup

[nycphp-talk] PEAR CAPTCHA Problems

Ben Sgro (ProjectSkyLine) ben at projectskyline.com
Wed Aug 29 18:44:03 EDT 2007


Hello, 

I've just written a class around the PEAR captcha code.

Except, I can't get it to work.
The code is included:

class Captcha
    {
        private $path;
        public  $error;
        function __construct($PATH)
        {
            $this->phrase = '';
            $this->image  = '';
            $this->width  = '';
            $this->height = '';
            $this->path   = $PATH;
            $this->error  = '';
        }
    
    
        function GenerateCaptcha($width, $height, $options=false)
        {
            if ( !$options ) $this->GenerateCaptchaOptions($options);
            $captcha = TEXT_CAPTCHA::factory('Image');
            $result  = $captcha->init($width, $height, null, $options);
            if ( PEAR::isError($captcha) )
            {
                return ($this->error = CAPTCHA_CREATE_ERROR);
            }

            $this->phrase = $captcha->getPhrase( );
            $this->image  = $captcha->getCAPTCHAAsJPEG( );
            if ( PEAR::isError($this->image) )
            {
                return ($this->error = CAPTCHA_IMAGE_ERROR);                
            }
            $this->width  = $width;
            $this->height = $height;

            $this->WriteCaptcha( );
            
            return $this;
        }
        
        
        function WriteCaptcha( )
        {
            $file = $this->path . md5($this->phrase) . '.jpg';
            file_put_contents($file, $this->image);     
        }
        
        
        function GetCaptchaFilename( )
        {
            return md5($this->phrase) . '.jpg';
        }
        
        
        function GenerateCaptchaOptions(&$options)
        {
            $options = array(   'font_size' => 32,
                                'font_path' => './',
                                'font_file' => 'arial.ttf'
                            );
        }
    }

As far as I can tell, its unable to write/create the file/image.

[29-Aug-2007 18:34:09] There was an error creating the captcha image

Is what I am getting in my PHP logs. Now the captcha directory is chmod 777, just to see if that
fixed it. It didn't. I also did a chown apache:blah captcha and that didn't work either.

The code I'm using to call the CAPTCHA is:

        $captchaObject = new Captcha(CAPTCHA_PATH);
        $captchaObject->GenerateCaptcha(400, 180);
        if ( $captchaObject->error != '' )
        {
            error_log($captchaObject->error);
        }
        $smartyObject->assign('captcha', $htmlObject->CreateImage(
            $captchaObject->GetCaptchaFilename( ), 300, 180, 'CAPTCHA'));

Now, if I print_r($captchaObject) I get:

    [error] => There was an error creating the captcha image
    [phrase] => chiaprae
    [image] => PEAR_Error Object
        (
            [error_message_prefix] => 
            [mode] => 1
            [level] => 1024
            [code] => 
            [message] => Error initializing Image_Text (font missing?!)I just copied this from the PEAR Apress book. Does anyone know where to get the font file,if that is indeed the error?- Ben
Ben Sgro, President
ProjectSkyLine - Defining New Horizons
+1 718.487.9368 (N.Y. Office)

Our company: www.projectskyline.com
Our products: www.project-contact.com

This e-mail is confidential information intended only for the use of the individual to whom it is addressed.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.nyphp.org/pipermail/talk/attachments/20070829/a16366fe/attachment.html>


More information about the talk mailing list