tp5框架captcha验证码配置验证以及点击刷新

先上个效果图

1.从composer安装captcha

composer require topthink/think-captcha 1.* -vvv

注意captcha的版本, tp5的版本使用captcha 1.*, tp5.1的版本使用captcha 2.*

2.打开application/config.php配置文件

添加以下代码

//验证码配置
    'captcha'                => [
        // 验证码字符集合
        'codeSet'  => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
        // 验证码字体大小(px)
        'fontSize' => 18,
        // 是否画混淆曲线
        'useCurve' => true,
        //使用中文验证码
        'useZh'    => false,
        // 验证码图片高度
        'imageH'   => 38,
        // 验证码图片宽度
        'imageW'   => 130,
        // 验证码位数
        'length'   => 4,
        // 验证成功后是否重置
        'reset'    => true
    ],

3.html部分

我这里用的是layui后台模板

<div class="layui-form-item">
  <div class="layui-row">
    <div class="layui-col-xs7">
      <label class="layadmin-user-login-icon layui-icon layui-icon-vercode" for="verifycode"></label>
      <input type="text" name="verifycode" id="verifycode" lay-verify="required" placeholder="验证码" class="layui-input">
    </div>
    <div class="layui-col-xs5">
      <div style="margin-left: 8px;">
        <img src="{:captcha_src()}" class="verifyimg">
      </div>
    </div>
  </div>
</div>

或者下面两种我查到的方法任选一种

<img src="{:captcha_src()}" class="verify" onclick="javascript:this.src='{:captcha_src()}?rand='+Math.random()" >
<div class="yzm">
  <img src="{:captcha_src()}" class="verify" onclick="resVerify()" alt="验证码" />
<a href="javascript:resVerify();" rel="external nofollow"  >看不清,换一张</a>
</div>

4.js部分

这里我以我写的layui那部分html代码为例

var verifyimg = $('.verifyimg').attr('src');
$('.verifyimg').click(function(){
  if (verifyimg.indexOf('?') > 0) {
    $('.verifyimg').attr('src', verifyimg + '&random=' + Math.random());
  }else{
    $('.verifyimg').attr('src', verifyimg.replace(/\?.*$/, '') + '?' + Math.random());
  }
});

其他方法原理都一样,我就不写了.

5.后台验证部分

这里我以tp5自带的Validate验证器为例,因为比较方便.

$param = request()->post()['data'];
//验证
$validate = new Validate([
    'username|用户名' => 'require',
    'password|密码' => 'require',
    'verifycode|验证码' => 'require|captcha',
]);
if (!$validate->check($param)) {
    return json(['code' => 0, 'msg' => $validate->getError()]);
}

查到的其他方法如下:

$captcha=input("captcha");
//验证
if (!captcha_check($captcha)){
    exit(json_encode(array('status'=>0,'msg'=>'验证码错误')));
}

//或者

$captcha = new Captcha();
//验证
if (!$captcha->check(input("captcha"))){
    return $this->error("验证码错误");
}

-End-

风影OvO

风影OvO, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA 4.0协议进行授权 | 转载请注明原文链接

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐