tp5.1使用验证码类时,验证码图片不显示

一、问题描述

​在使用 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();
}

重新刷新页面,发现验证码图片出来了。

猜你喜欢

转载自blog.csdn.net/studyphp123/article/details/89418815
今日推荐