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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决thinkphp5中验证码常见问题相关的知识,希望对你有一定的参考价值。

参考技术A 验证码用session存储就好了,这代码是看不出什么的。在调用验证码的类中便将类的比较内容存储在session里。

如何解决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= '没有输入验证码';

    照以上做没有任何问题


参考技术A 可以在腾讯智慧安全页面申请使用腾讯御点
然后使用这个软件上面的修复漏洞功能
直接对电脑的漏洞进行检测和修复就可以了

以上是关于如何解决thinkphp5中验证码常见问题的主要内容,如果未能解决你的问题,请参考以下文章

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

阿里云 windows 2008 使用Thinkphp5 captcha验证码不显示问题

Thinkphp 5 验证码无法正常显示的排错以及解决方案 已解决

图形验证码如何解决集群中使用问题

如何解决短信验证码接口被攻击的问题?

如何解决WEB性能测试中的验证码问题