安装

composer require youngyezi/captcha

使用

新版的包已经删除了 session 支持,完全交给业务自由选择存储方式

个人觉得这样更方便来解耦业务,尤其 Lumen 大多时候用来做 Api 开发,并不需要开启 Session 服务

注册服务 bootstrap\app.php

$app->register(Youngyezi\Captcha\CaptchaServiceProvider::class);

// 添加别名
$app->alias('captcha', 'Youngyezi\Captcha\CaptchaServiceProvider');

配置文件

复制 vendor\Youngyezi\Captcha\config\captcha.php 文件至 项目 config 文件下

For Example

验证码生成

//  创建验证码
// 配置文件 key($config)
// 返回值包括一个base_64加密的图片和一个key
$data = app('captcha')->create(); // 自定义储存 key (如 redis ,session 等) .... // 返回验证码图片 img

生成的base64可以用这个站点转换 站点链接

验证码校验

// 通过 code 和 key 来校验
$captcha = $request->input('captcha'); // 获取自定义存储的 key 值
$key = { ... }; if(app('captcha')->check($captcha, $key) === false) {
//校验失败
}
  /*
* 用户注册
*/
public function register()
{
$input = Input::get();
if(!isset($input['username']) || empty($input['username']) ||
!isset($input['iponenumber']) || empty($input['iponenumber']) ||
!isset($input['password']) || empty($input['password']) ||
!isset($input['key']) || empty($input['key']) ||
!isset($input['captcha']) || empty($input['captcha'])
){
return response()->json(['code'=>,'msg'=>'参数缺失']);
} if(!$this->check($input['key'],$input['captcha'])){
return response()->json(['code'=>,'msg'=>'输入验证码错误']);
} if(DB::table('user')->where('iponenumber',$input['iponenumber'])->first()){
return response()->json(['code'=>,'msg'=>'手机号已注册']);
} $insert = DB::table('user')->insert(['username'=>htmlspecialchars($input['username']),'iponenumber'=>$input['iponenumber'],'password'=>Hash::make($input['password'])]);
if($insert){
return response()->json(['code'=>,'msg'=>'注册成功']);
}else{
return response()->json(['code'=>,'msg'=>'注册失败']);
}
} /*
* 图片验证码
* 返回值包括一个base_64加密的图片和一个key
*/
public function captchaInfo()
{
$result = app('captcha')->create();
Cache::put($result['key'],$result['key'],);
if(isset($result['sensitive'])){
unset($result['sensitive']);
}
return response()->json(['code'=>,'msg'=>'成功','data'=>$result]);
} /**
* @params key,captcha
* 两个参数key和验证码
*/
private function check($key,$captcha)
{
return app('captcha')->check(strtolower($captcha),Cache::get($key));
}

自己封装使用的demo

https://github.com/Youngyezi/captcha

最新文章

  1. SAP CRM 使用Javascript触发SAP Server Event
  2. html iframe 元素之间的调用
  3. 问题(the question)
  4. C/C++程序员应聘试题剖析(转载)
  5. 全屏背景:15个jQuery插件实现全屏背景图像或媒体
  6. [LintCode] Valid Palindrome 验证回文字符串
  7. <mvc:annotation-driven/>与<mvc:default-servlet-handler/>之间的一个问题
  8. knockoutjs+jquery.gridgroup 实现table数据加载和行合并
  9. Ubuntu上安装jdk,Jboss
  10. 密码算法详解——AES
  11. Css绘制形状
  12. 使用Shader制作loading旋转动画
  13. cxgrid主从表的从表数据小于主表总数的问题
  14. Dynamics CRM Plug-in
  15. mysql报错:1130 -host 'localhost' is not allowed to connect to this mysql server
  16. mybatis学习 十六 auto_mapping实现连表查询
  17. datagrid 完整dom结构
  18. 使用jQuery在javascript中自定义事件
  19. Windwos在cmd如何复制文本
  20. 【matlab】使用VideoReader提取视频的每一帧,不能用aviread函数~

热门文章

  1. Failed to resolve: com.android.support:appcompat-v7:29.+ 版本不一致错误
  2. Java教程-修炼
  3. drf 接口文档
  4. web端常见测试
  5. 内网IPC$入侵加pstools之远程控制
  6. 为什么MYSQL分页时使用limit+ order by会出现数据重复问题
  7. nodeJS菜鸟教程笔记
  8. python3-cookbook笔记:第一章 数据结构和算法
  9. Git分支规范说明
  10. SSRF服务器端请求伪造