问题:TP程序在本地测试一切正常,然后上传到服务器环境登陆后台发现验证码无法显示。
经验告诉我们可能是tmp临时或者网站目录权限不对造成,但tp程序特殊,有的是二次开发的,类库和调用的方式不一样。
解决方法:在调用验证码之前加上 ob_clean();
文件位置:Home\Lib\Action\PublicAction.class.php
不显示验证码的代码:
-
public function verify(){
-
$verify = new \Think\Verify();
-
$verify->entry();
-
}
修改为:
-
public function verify(){
-
-
ob_clean();
-
-
$verify = new \Think\Verify();
-
$verify->entry();
-
}
或者更高版本tp代码的
public function verify() {
ob_clean();
import('ORG.Util.Image');
Image::buildImageVerify('4','3','png','84','38','verify');
}
这样的话,保存再刷新一次,验证码就出现了(无需修改任何服务器配置和重启操作)
分析:
1、ob_clean这个函数的作用:
用来丢弃输出缓冲区中的内容,如果你的网站有许多生成的图片类文件,那么想要访问正确,就要经常清除缓冲区
2、在出现问题的页面查看源代码,发现在页面尾部出现了一堆其他代码(原因不明,应该是tp程序运行在windows服务器上的某种依赖库或者权限不对造成的)
未经允许不得转载:天府数据港官方信息博客 » ThinkPHP生成的验证码不显示问题解决
客官点个赞呗! (1)