解决thinkPHP图片验证码不显示的问题

来源:互联网 发布:一览 mac 版 编辑:程序博客网 时间:2024/05/01 08:39

现象:thinkPHP 验证码 因其本身有错无法显示 。。。郁闷的是本地测试的时候是好的,传到服务器上的时候显示不了,通过各种方式确定是bom的问题,在输出图片之前输出了UTF8的bom,导致图片无法识别。解决方案如下,从其他博客上转载过来的。

**********************************************************

今天做到验证码这一块

想到tp自带验证图片  大喜
单鼓捣半天不出来 一直是个小 X

官方提示:

如果无法显示验证码,请检查:

²PHP是否已经安装GD库支持;

²输出之前是否有任何的输出(尤其是UTF8BOM头信息输出);

²Image类库是否正确导入;

²如果是中文验证码检查是否有拷贝字体文件到类库所在目录;

测试半天,不行
网上找来一个能用的方法,放到一个文件里执行可用,进入到tp里面通过index.php入口进去就是小 x
然后能用的方法所在文件吧编码改为utf-8 含有bom的编码也会出现小 X ,其他编码都会出来验证码

初步判断是tp执行到输出验证码的前面有内容输出,主管想到了清除之前的输出就行
类似:
<?php
ob_start();//不加这个是不行的(貌似不加可以)
echo "不要显示";
ob_end_clean();
echo "只要显示这";
?>

解放方法
修改生成验证码方法:

//生成验证码
public function verifyimg(){
import("ORG.Util.Image");
ob_end_clean();  //清空输出缓存
Image::buildImageVerify();
}
******************************************************
以上为转载内容,转载自普洱茶IJ的博客,原文地址为http://blog.sina.com.cn/s/blog_4acbd39c01013jq9.html

另外,在使用ob_end_clean();这句之前,我试过用ob_clean;但是没有起作用,原因我并未深究,日后再研究这其中的道理。

0 0