同事在用php展示验证码时,老是无法正常显示
但是的代码在别的地方正常运行
查看了输出,是有内容的,但是就是不显示
根据经验,应该是输出的内容有混淆,就是说在输出图片内容的时候,掺杂进去额外的信息
通过在输出图片内容之前添加一行代码ob_clean();
这个ob_clean()的作用是用来丢弃输出缓冲区中的内容,如果你的网站有许多生成的图片类文件,那么想要访问正确,就要经常清除缓冲区
这个方法加上去后,验证码立马就显示出来了。
我们回过头去查看出错时的输出内容(查看response),与正确的比较后,发现在开始处都了
77u/ ,通过百度,这个是一个Bom头信息,也就是说,我们的php页面的格式出问题了,正常来说是用Utf-8 无 BOM 编码格式,但实际上某一个页面的编码格式被改变了
那如何寻找这个文件?
正常来说,先看看本身这个页面是否编码格式正确,
其次,看看是否该页面的其他方法也同样不能正确访问,如果其他方法也出现了这个bom头信息,说明是前面的调用页面编码格式错了。否则要看看当前方法的子方法所属页面是否编码也格式错误。
为了快速查找,入口的index.php,config.php这些容易造成所有方法出错