84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
描述你的问题 GD库已经打开,搜索看了其他朋友的解决办法:清除BOM、ob_clean()、代码起始位置不换行还是不显示。
贴上相关代码
ringa_lee
经过测试,你的代码问题在这里:在实现随机下划线的时候,imagecolorallocate这个函数传入的参数不对,应该给予4个params,现在的代码给了6个参数。结果:修改后,验证码显示没有问题,可以正常输出。
这里的imagecolorallocate应该是传4个参数 还有没看懂你上面
这一点没明白你的意思是要干啥下面也看到调用的地方 注释之后
结果是这个
查看error log,再判断
header('Content-Type:image/png');
要从其他地方查看,从framework所有的文件进行DOM头排查
你先试试复制一些网上成功的代码试试看,如果能成功那么就是你代码的问题,不然就应该是环境的问题。
是不是没安装GD?检查phpinfo()
在header()前清理输出缓冲区,
ob_clean() header('Content-Type:image/png'); imagepng($_img);
最终生成的验证码是酱紫,
那么问题来了,1、为什么ob_clean()要加在imagepng()之前?显然,header()之前的代码都不会被缓存到ob,真正缓存到ob的是imagepng()生成的验证码,当你在浏览器刷新时,ob_clean()会为你清除前一次保存在ob的验证码。然后imagepng()再次生成验证码保存到ob,ob随后丢到程序缓存打包到浏览器。
ob_clean()
imagepng()
header()
2、假如没有ob_clean(),按理说也会生成一张验证码,验证码跑到哪里了?请使用php5.4以下版本或者关闭ob。
Ps:php5.3之后,ob_start()默认开启,重复添加ob_start()会导致ob_end_*()失效。(Oops..在本地编辑代码ob_start重复则出错,然而看到某个上传类却能完好运行。谁知道请详解一下。)
ob_start()
ob_end_*()
先谢谢帮修改代码高亮的朋友,改了几次高亮都不行,第一次用。回去试试。
清除缓存还是不行?
经过测试,你的代码问题在这里:
在实现随机下划线的时候,imagecolorallocate这个函数传入的参数不对,应该给予4个params,现在的代码给了6个参数。
结果:修改后,验证码显示没有问题,可以正常输出。
这里的imagecolorallocate应该是传4个参数 还有没看懂你上面![](http://img.php.cn/upload/image/000/000/000/78cd59640f42f6376628ddae40448cce-0.png)
这一点没明白你的意思是要干啥下面也看到调用的地方 注释之后![](http://img.php.cn/upload/image/000/000/000/4ff8731b694af607691f96bf8ae74b86-1.png)
结果是这个
查看error log,再判断
header('Content-Type:image/png');
要从其他地方查看,从framework所有的文件进行DOM头排查
你先试试复制一些网上成功的代码试试看,如果能成功那么就是你代码的问题,不然就应该是环境的问题。
是不是没安装GD?检查phpinfo()
在header()前清理输出缓冲区,
最终生成的验证码是酱紫,
那么问题来了,
1、为什么
ob_clean()
要加在imagepng()
之前?显然,
header()
之前的代码都不会被缓存到ob,真正缓存到ob的是imagepng()
生成的验证码,当你在浏览器刷新时,ob_clean()
会为你清除前一次保存在ob的验证码。然后imagepng()
再次生成验证码保存到ob,ob随后丢到程序缓存打包到浏览器。2、假如没有
ob_clean()
,按理说也会生成一张验证码,验证码跑到哪里了?请使用php5.4以下版本或者关闭ob。
Ps:php5.3之后,
ob_start()
默认开启,重复添加ob_start()
会导致ob_end_*()
失效。(Oops..在本地编辑代码ob_start重复则出错,然而看到某个上传类却能完好运行。谁知道请详解一下。)先谢谢帮修改代码高亮的朋友,改了几次高亮都不行,第一次用。回去试试。
清除缓存还是不行?