ThinkPHP 验证码因存在错误而无法显示解决
- 发表于
- PHP
错误提示
1 |
图像“http://site/index.php?act=seccode&op=funcode&nchash=101d10a9”因存在错误而无法显示。 |
解决方法
在调用验证码之前加上 ob_clean();
生成验证码函数
1 2 3 4 |
public function verify(){ $verify = new \Think\Verify(); $verify->entry(); } |
修改如下
1 2 3 4 5 6 7 |
public function verify(){ ob_clean(); $verify = new \Think\Verify(); $verify->entry(); } |
问题解决!
分析
- ob_clean这个函数的作用:
用来丢弃输出缓冲区中的内容,如果你的网站有许多生成的图片类文件,那么想要访问正确,就要经常清除缓冲区 - 在出现问题的页面查看源代码,发现在页面尾部出现了一堆其他代码(原因不明)
对于thinkphp验证码无法显示要注意的问题
- 是否已成功安装了GB库
- 验证码类放置的位置,以及加载的路径是否正确
import("@.ORG.Util.Image");--放在项目包里加载方式
import('ORG.Util.Image');--放在核心扩展包的加载方式
- 检查一下是否少了String类,如果不少,和Image是否在同一个目录下。
- 检查一下页面编码是不是UTF8 ,不是的话转换
- 如果是缓存造成的,清除一下BOM,方法是找到一个清除BOM的类,到thinkphp官方论坛里找。
- 不同版本的核心包验证码类有些是有出入的,试着打开Image.class.php中的output函数中的ob_clean();注释掉或者加上,调试一下
参考
原文连接:ThinkPHP 验证码因存在错误而无法显示解决
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。