PHP GD图像未在Chrome中显示

时间:2012-10-27 06:46:58

标签: php gd captcha simplecaptcha

我们在其中一个项目中使用了Captcha.php,它在所有浏览器中打开,但我们无法在Google Chrome版本22中查看。

我们的Captcha脚本

session_start();
$captcha = new SimpleCaptcha();
$captcha->CreateImage();

class SimpleCaptcha 
{
    function CreateImage()
    {
        header("Content-Type: image/jpeg");

        $md5              = md5(rand(0,9999));
        $pass             = substr($md5, 10, 5);
        $_SESSION["pass"] = $pass;

        $image     = ImageCreatetruecolor(100, 20);
        $clr_white = ImageColorAllocate($image, 0, 0, 0);
        $clr_black = ImageColorAllocate($image, 255, 255, 255);

        imagefill($image, 0, 0, $clr_white);
        imagefontheight(15);
        imagefontwidth(15);
        imagestring($image, 5, 30, 3, $pass, $clr_black);

        return imagejpeg($image);
        imagedestroy($image);
    }
}

HTML实施

<img src="code/captcha.php" width="100" height="20" alt="Captcha Code"/>

我们无法在Google Chrome上查看。所有浏览器都返回相同的图像。

5 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。刚关掉我的卡巴斯基。现在工作正常。你也可以试试这个。

答案 1 :(得分:0)

你说Chrome会不断渲染相同的图片?尝试发送标题告诉浏览器不要缓存任何内容。

header('Pragma: no-cache');
header('cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 01 Jan 1999 00:00:00 GMT'); 

答案 2 :(得分:0)

可能与缓存有关,我已经使用了这个脚本:

header('Cache-Control: no-cache, must-revalidate');

这条线应该足够了。

答案 3 :(得分:0)

在Chrome和&amp ;;之间存在一个已知的问题。某些版本的卡巴斯基。

卡巴斯基反病毒软件并不能解决问题,但卡巴斯基终端安全公司确实如此。

出于某种原因,在从Web检索动态创建的图像时,两个应用程序交互期间,标题中的内容长度变为1个字节。

如果您修改标题中的内容长度值,它将在Chrome中运行,但在Firefox,IE和&amp;所有人都正确遵循RFC的Opera。

我不确定哪个应用程序确实存在错误,但它不是您可以轻松修复的内容。

答案 4 :(得分:0)

添加

ob_clean();

为我解决了。

完整示例:

$img = imagecreatefromjpeg('my_image.jpg');
ob_clean();
header('Content-Type: image/jpeg');
imagejpeg($img);
imagedestroy($img);