🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# mews/captcha github : https://github.com/mewebstudio/captcha ## 安装 ~~~ composer require mews/captcha ~~~ 在config/app.php中加上这个 ``` 'providers' => [ // ... Mews\Captcha\CaptchaServiceProvider::class, ] 'aliases' => [ // ... 'Captcha' => Mews\Captcha\Facades\Captcha::class, ] ``` 执行 ~~~ php artisan vendor:publish ~~~ 会生成config/captcha.php这个文件 ``` //验证码的源 'characters' => '2346789abcdefghjmnpqrtuxyzABCDEFGHJMNPQRTUXYZ', 'default' => [ 'length' => 5, //验证码长度 'width' => 120, //宽度 'height' => 36, //高度 'quality' => 90, ], //其他的样式 ``` ## 操作 ### 生成图片 ``` //这个验证码的样式挺多的,路由中写给前端可选择的样式 Route::get('/captcha/{config?}','IndexController@captcha'); public function captcha(CaptchaBuilder $captcha,$config='default') { // 设置此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可。 header ( " Expires: Mon, 26 Jul 1970 05:00:00 GMT"); // 设置此页面的最后更新日期(用格林威治时间表示)为当天,可以强制浏览器获取最新资料 header ( " Last-Modified:" . gmdate (" D, d M Y H:i:s"). "GMT"); // 告诉客户端浏览器不使用缓存,HTTP 1.1 协议 header ( " Cache-Control: no-cache, must-revalidate " ); // 告诉客户端浏览器不使用缓存,兼容HTTP 1.0 协议 header ( " Pragma: no-cache " ); header('Content-type: image/jpeg'); @ob_end_clean(); //use Gregwar\Captcha\CaptchaBuilder; return $captcha->create($config); } ``` ### 验证 ``` //验证的话,他在validate里面已经有了 'xx'=>'required|captcha', //错误提示的话,在resource/lang/en或者zh里面有个validation.php里面添加一行 'captcha'=>'验证码不正确', ``` # gregwar/captcha github : https://github.com/Gregwar/Captcha ## 安装 ~~~ composer require gregwar/captcha ~~~ ## 操作 ### 生成图片 ``` //use Gregwar\Captcha\CaptchaBuilder; $builder = new CaptchaBuilder; //设置验证码的宽高和字体 $builder->build('150','50',null); //use Session //保存验证码的码值到session中,每次生成新的session数据把之前的session清空 Session::flash('login',$builder->getPhrase()); // 设置此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可。 header ( " Expires: Mon, 26 Jul 1970 05:00:00 GMT"); // 设置此页面的最后更新日期(用格林威治时间表示)为当天,可以强制浏览器获取最新资料 header ( " Last-Modified:" . gmdate (" D, d M Y H:i:s"). "GMT"); // 告诉客户端浏览器不使用缓存,HTTP 1.1 协议 header ( " Cache-Control: no-cache, must-revalidate " ); // 告诉客户端浏览器不使用缓存,兼容HTTP 1.0 协议 header ( " Pragma: no-cache " ); header('Content-type: image/jpeg'); @ob_end_clean(); $builder->output(); ``` ### 校验验证码 ``` $code=$request->get('code'); $code=mb_strtolower(trim($code),'utf-8'); if (mb_strtolower(trim(session('login')),'utf-8') != $code){ echo 0; }else{ echo 1; } ```