PHP验证码图片 生成不成功

南集
  • 66
    //验证码
   public function verifAction($num=3, $interference=true){
    $image = imagecreate(100, 30); // 创建画布
    $bgcolor = imagecolorallocate($image, 255, 255, 255);//画布背景颜色
    imagefill($image,0,0,$bgcolor);//填充背景 输出$num位验证码

    $capatch='';
    for($i=0;$i<$num;$i++){    
        $fontsize=14;//字体大小    
        $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));//字体颜色    
        $date='QWERTYUPASDGHJKZXCVBNMqwertyupasdfghjkzxcvbnm'; 
        $fontcontent=substr($date,rand(0,strlen($date)-1),1);
        $capatch.=$fontcontent; 
        $x=($i*100/$num)+rand(5,10);
        $y=rand(5,10);    //生成验证码

        $_SESSION['capatch']=strtolower($capatch);
        file_put_contents('a.txt', $_SESSION['capatch']);
        imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
    }
    //干扰点
    if($interference == true){
        for($i=0;$i<100;$i++){    
            $pointcolor=imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));    
            imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);}//干扰线
        for($i=0;$i<2;$i++){    
           $linecolor=imagecolorallocate($image,rand(100,200),rand(100,200),rand(100,200));    
           imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);
        }
    }
    $_SESSION['authcode']=$capatch;
    header('content-type:image/png'); 
    imagepng($image); // 输出图片
    imagedestroy($image);//销毁图片  
    }
    
    
    

图片描述

这段代码在框架之外生成验证码是正常的,但是一旦放到代码里面就不正常了。我用url直达这个函数,得到的永远是一片没有验证码的黑色背景?请教各位大神,问题可能出在哪了?
我用的是zend-framework框架.

-------------------分割线---------

public function verifAction(){
header("Content-type:image/png");
$a = imagecreate(100,100);
imagecolorallocate($a,255,0,255);
imagepng($a);
imagedestroy($a);
exit();
}

我刚刚再试发现,只创建一块画面,画布也输不出来。这是哪里的问题?
换了个浏览器是这样的。

图片描述

回复
阅读 2.2k
3 个回答

注意代码空格,header 头部信息调试。生成图片过程都好好检查

框架里面和你直接访问流程不一样,一般来说是框架里面调用完还会执行什么 输出什么的 你可以调试一下!

框架里a.txt有没打印出什么东西,如果没有,或许是跟session文件夹权限有关(如果是以文件形式存储的话),将框架里存储session的文件夹权限变为777试试。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏