PHP验证码图片 生成不成功
//验证码
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();
}
我刚刚再试发现,只创建一块画面,画布也输不出来。这是哪里的问题?
换了个浏览器是这样的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
注意代码空格,header 头部信息调试。生成图片过程都好好检查
框架里面和你直接访问流程不一样,一般来说是框架里面调用完还会执行什么 输出什么的 你可以调试一下!
框架里a.txt有没打印出什么东西,如果没有,或许是跟session文件夹权限有关(如果是以文件形式存储的话),将框架里存储session的文件夹权限变为777试试。