The image captcha randomly displays a blank captch. Roughly 4 out of 10 attempts.
I have already discovered the problem and a post on the zend forum suggest the only fix is to edit the Zend Framework code.
Is there any way to fix this without editing the ZF code? How come Zend have not fixed this in the releases since then, I have a look in the change log but nothing related to this?
$w = $this->getWidth();
$h = $this->getHeight();
$fsize = $this->getFontSize();
$img_file = $this->getImgDir() . $id . $this->getSuffix();
if(empty($this->_startImage)) {
$img = imagecreatetruecolor($w, $h);
} else {
$img = imagecreatefrompng($this->_startImage);
if(!$img) {
require_once 'Zend/Captcha/Exception.php';
throw new Zend_Captcha_Exception("Can not load start image");
}
$w = imagesx($img);
$h = imagesy($img);
}
$text_color = imagecolorallocate($img, 0, 0, 0);
$bg_color = imagecolorallocate($img, 255, 255, 255);
imagefilledrectangle($img, 0, 0, $w-1, $h-1, $bg_color);
$textbox = imageftbbox($fsize, 0, $font, $word);
$x = ($w - ($textbox[2] - $textbox[0])) / 2;
$y = ($h - ($textbox[7] - $textbox[1])) / 2;
// Edit: check not over 100
if($x > 50){ $x = 50;}
if($y > 100){ $y = 100;}
imagefttext($img, $fsize, 0, $x, $y, $text_color, $font, $word);
Debugging with a die() proves this is the case:
die("img=".$img ." fsize=".$fsize. " x=".$x ." y=".$y . " h=".$h );
img=Resource id #159 fsize=24 x=1073741923.5 y=41 h=50