一、问题描述
在使用 tp5.1 框架中的 验证码类 的时候,准备工作都做好了,但是验证码图片却无法显示,浏览器缓存也清掉了,电脑也重启的,图片路径也没有问题,就是不显示验证码的图片。
1)通过composer下载的验证码类的文件目录:
2)前端涉及到的代码:
<img onclick="changeCode(this)" src="{:url('login/verify')}" alt="captcha" /></div><script>// 点击验证码刷新图片function changeCode(obj){var url = "{:url('login/verify',['random'=>"+Math.random+"])}"; //兼容低版本的浏览器obj.src = url;}
</script>
3)验证码类(与controller同级目录 validate/LoginValidate.php
)
namespace app\bis\validate;use think\Validate;/*** 登录验证器*/
class LoginValidate extends Validate
{// 验证规则protected $rule = ["username" => "require","password" => "require","code" => "require"];// 提示信息protected $message = ["username.require" => "用户名不能为空","password.require" => "密码不能为空","code.require" => "验证码不能为空"];
}
4)生成验证码(controller/Login.php
):
namespace app\bis\controller;use think\Controller;
use think\captcha\Captcha;
use app\bis\validate\LoginValidate;/*** 商户登录*/
class Login extends Controller
{// 生成验证码public function verify(){// 实例化验证码类$captcha = new Captcha();return $captcha->entry();}
}
二、解决方法
在生成验证码类代码的前面加一行代码:
ob_clean(); // 将输出缓存清掉
完整的代码如下:
// 生成验证码
public function verify()
{ob_clean();// 实例化验证码类$captcha = new Captcha();return $captcha->entry();
}
重新刷新页面,发现验证码图片出来了。