如何解决thinkphp5中验证码常见问题

如题所述

    在项目目录下面生成captcha扩展 (需要安装composer来安装)

    composer require topthink/think-captcha

    2 安装完成之后会呈现如上的目录。captcha扩展安装完成之后,就可以进行下一步操作

    配置comfig.php文件:在comfig.php下面加个扩展

    //验证码

    'captcha'=> [

    //字符集合

    'codeset'=>'23456780qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM',

    //字体大小

    'fontSize' => 18,

    //是否花混淆曲线

    'useCurve' => true,

    //图片高度

    'imageH' => 40,

    //图片宽度

    'imageW' => 130,

    //位数

    'length' => 4,

    //验证成功后是否重置

    'reset' => true,

    ],

    3.刷新验证码功能  src路径在这里可以用框架自带的也可以直接访问img方法

    <img id="captcha_img" src="{:captcha_src()}" alt="验证码" onclick="refreshVerify()"><a

    href="javascript:refreshVerify()">点击刷新</a>

    在js《script》标签部分加上刷新事件

    function refreshVerify()

    {

    var ts = Date.parse(new Date() )/1000;

    console.log(ts);

    $('#captcha_img').attr('src','/captcha?id='+ts);

    }

    4.在控制器里用TP验证自带的方法

    在你的登录的控制器里面加入

    4.1在头部引入 use think\captcha\Captcha;

    //该方法引入img图像  宽高可以再img用css直接控制!

    public function img() {

    $captcha = new Captcha();

    return $captcha->entry();

    }

    // 检测输入的验证码是否正确,$code为用户输入的验证码字符串,$id多个验证码标识

    function check_verify($code, $id = ''){

    $captcha = new Captcha();

    return $captcha->check($code, $id);

    }这个方法下面的验证要用到

    在你的form验证码值发送的方法里加入 post提交 GET提交就把post改成get  表单验证码name是code

    $request=request();

    if ($request->isPost()){

    if($request->post('code')){

    if($this->check_verify($request->post('code'))){

    $message= '验证成功';

    }else{

    $message= '验证错误';

    }

    }else{

    $message= '没有输入验证码';

    }

    }

    照以上做没有任何问题


温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-12
可以在腾讯智慧安全页面申请使用腾讯御点
然后使用这个软件上面的修复漏洞功能
直接对电脑的漏洞进行检测和修复就可以了