为了账号安全,请及时绑定邮箱和手机立即绑定

PHP验证码图片 生成不成功

PHP验证码图片 生成不成功

PHP
慕哥9229398 2019-03-18 18:06:27
//验证码 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(); } 我刚刚再试发现,只创建一块画面,画布也输不出来。这是哪里的问题?换了个浏览器是这样的。
查看完整描述

3 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

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

查看完整回答
反对 回复 2019-03-18
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

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

查看完整回答
反对 回复 2019-03-18
?
波斯汪

TA贡献1811条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 949 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信