ThinkPHP 验证码类 Verify

最简单的使用方法:

  1. $Verify = new \Think\Verify();
  2. $Verify->entry();
生成验证码系统会自动将验证码的值和时间戳加入session中

参数描述
expire验证码的有效期(秒)
useImgBg是否使用背景图片 默认为false
fontSize验证码字体大小(像素) 默认为25
useCurve是否使用混淆曲线 默认为true
useNoise是否添加杂点 默认为true
imageW验证码宽度 设置为0为自动计算
imageH验证码高度 设置为0为自动计算
length验证码位数
fontttf指定验证码字体 默认为随机获取
useZh是否使用中文验证码
bg验证码背景颜色 rgb数组设置,例如 array(243, 251, 254)
seKey验证码的加密密钥
codeSet验证码字符集合 3.2.1 新增
zhSet验证码字符集合(中文) 3.2.1 新增


设置方法:

  1. $Verify = new \Think\Verify();
  2. $Verify->fontSize = 30;
  3. $Verify->length = 3;
  4. $Verify->useNoise = false;
  5. $Verify->entry();
!!!中文验证码需要自己下载字体并做相关配置

验证码检测

可以用Think\Verify类的check方法检测验证码的输入是否正确,例如,下面是封装的一个验证码检测的函数:

  1. // 检测输入的验证码是否正确,$code为用户输入的验证码字符串
  2. function check_verify($code, $id = ''){
  3. $verify = new \Think\Verify();
  4. return $verify->check($code, $id);
  5. }

### ThinkPHP 中实现滑动验证码ThinkPHP框架中集成极验(Geetest)滑动验证码可以显著提升网站的安全性和用户体验。通过引入Geetest SDK并按照官方文档配置,可以在不同页面轻松部署该功能。 #### 配置环境 确保已经安装了Composer工具,在命令行执行以下指令来安装必要的依赖包: ```bash composer require topthink/think-captcha ``` 此操作会自动下载所需的库文件到项目目录下[^1]。 #### 修改控制器逻辑 编辑对应的Controller文件,比如`Login.php`,加入初始化验证过程所需的数据准备方法: ```php use think\captcha\driver\Geetest; public function initialize() { parent::initialize(); // 初始化 Geetest 对象实例 $this->geetest = new Geetest(config('geetest')); } ``` 定义一个用于处理前端请求的方法,用来获取验证参数并向客户端传递: ```php public function getCaptcha() { try { $result = $this->geetest->getNewCaptcha(); return json([ 'status' => true, 'data' => [ 'gt' => $result['gt'], 'challenge' => $result['challenge'] ] ]); } catch (\Exception $ex) { return json(['status'=>false,'msg'=>$ex->getMessage()]); } } ``` 当用户提交表单时,需增加额外的校验步骤以确认其合法性: ```php public function loginSubmit($username,$password,$_POST) { if (!$this->geetest->check($_POST)) { throw new \Exception("Verification failed"); } // 继续原有业务流程... } ``` #### 更新视图模板 调整HTML部分以便正确加载JavaScript资源以及显示控件本身。参照已有案例中的结构修改相应位置即可满足需求: ```html <!-- 引入SDK --> <script src="https://static.geetest.com/static/tools/gt.js"></script> <div id="embed-captcha"></div> <button type="button" class="btn btn-primary" onclick="onFinish()">完成</button> <script> var handlerEmbed = function (captchaObj) { captchaObj.appendTo("#embed-captcha"); document.querySelector('.btn').addEventListener('click',function(){ captchaObj.verify(); }); }; // 获取验证数据 $.ajax({ url:'/getCaptcha', success:function(res){ initGeetest({ gt: res.data.gt, challenge: res.data.challenge, product:"float", offline:!res.status },handlerEmbed); }, }); </script> ``` 以上即为完整的ThinkPHP环境中集成了极验滑动验证码的过程描述[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值