Laravel11使用mews/captcha验证码(captcha)教程

2024-07-03   阅读:428   类型:后端   分类:Laravel    标签: PHP Laravel

Laravel11使用mews/captcha验证码系列教程,相比之前的版本设置有所变动。

验证码效果:

一、安装验证码扩展

composer require mews/captcha

二、注册验证码服务提供者

打开bootstrap/providers.php

添加如下代码,注册服务提供者

Mews\Captcha\CaptchaServiceProvider::class,

三、生成配置文件

使用composer命令,生成配置文件

php artisan vendor:publish

可以看到验证码的位于第8个序号,输入数字8,按下回车键

这里会在config文件夹下生成验证码配置文件captcha.php,我们在这里可以根据自己的喜好,设置验证码显示大小,字数等。

<?php

return [
    'disable' => env('CAPTCHA_DISABLE', false),
    'characters' => ['2', '3', '4', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'm', 'n', 'p', 'q', 'r', 't', 'u', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'M', 'N', 'P', 'Q', 'R', 'T', 'U', 'X', 'Y', 'Z'],
    'default' => [
        'length' => 3,
        'width' => 120,
        'height' => 36,
        'quality' => 90,
        'math' => false,
        'expire' => 60,
        'encrypt' => false,
    ],
    'math' => [
        'length' => 9,
        'width' => 120,
        'height' => 36,
        'quality' => 90,
        'math' => true,
    ],

    'flat' => [
        'length' => 6,
        'width' => 160,
        'height' => 46,
        'quality' => 90,
        'lines' => 6,
        'bgImage' => false,
        'bgColor' => '#ecf2f4',
        'fontColors' => ['#2c3e50', '#c0392b', '#16a085', '#c0392b', '#8e44ad', '#303f9f', '#f57c00', '#795548'],
        'contrast' => -5,
    ],
    'mini' => [
        'length' => 3,
        'width' => 60,
        'height' => 32,
    ],
    'inverse' => [
        'length' => 5,
        'width' => 120,
        'height' => 36,
        'quality' => 90,
        'sensitive' => true,
        'angle' => 12,
        'sharpen' => 10,
        'blur' => 2,
        'invert' => true,
        'contrast' => -5,
    ]
];

四、使用验证码

<div class="code"><img src="{{captcha_src()}}" width="116" height="36" onclick="this.src='{{captcha_src()}}'+Math.random()" id="radsrc"></div>

五、验证码判断

1、创建表单请求验证

php artisan make:request checkLogin

2、编写验证代码

<?php

namespace App\Http\Requests\Admin;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;

class checkLogin extends FormRequest
{
  /**
   * Determine if the user is authorized to make this request.
   *
   * @return bool
   */
  public function authorize()
  {
    return true;
  }

  /**
   * Get the validation rules that apply to the request.
   *
   * @return array
   */
  public function rules()
  {
    return [
      'yzm' => 'sometimes|required|captcha',
    ];
  }
  /**
   * 获取已定义验证规则的错误消息。
   *
   * @return array
   */
  public function messages()
  {
    return [
      'yzm.required' => '验证码不能为空',
      'yzm.captcha' => '验证码错误',
    ];
  }
//  ajax返回
  public function failedValidation(Validator $validator)
  {
    throw (new HttpResponseException(response()->json([
      'code' => 500,
      'msg' => $validator->errors()->first(),
    ], 200)));
  }
}

3、对验证码是否正确判断

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\checkLogin;
use Illuminate\Support\Facades\DB;

class LoginController extends Controller
{
  /*
   * 登录
   * */
  public function index(checkLogin $request){
    if ($request->isMethod('post')){
      //其他验证代码....
       
    }
  }
}

这里调用验证类会自动进行判断,判断验证码是否正确。

【腾讯云】2核2G云服务器新老同享 99元/年,续费同价,云服务器3年机/5年机限时抢购,低至 2.5折

‘简忆博客’微信公众号 扫码关注‘简忆博客’微信公众号,获取最新文章动态
转载:请说明文章出处“来源简忆博客”。http://tpxhm.com/adetail/1090.html

×
觉得文章有用就打赏一下文章作者
微信扫一扫打赏 微信扫一扫打赏
支付宝扫一扫打赏 支付宝扫一扫打赏

文章评论(0)

登录
简忆博客壁纸一
简忆博客壁纸二
简忆博客壁纸三
简忆博客壁纸四
简忆博客壁纸五
简忆博客壁纸六
简忆博客壁纸七
简忆博客壁纸八
头像

简忆博客
勤于学习,乐于分享

置顶推荐

打赏本站

如果你觉得本站很棒,可以通过扫码支付打赏哦!
微信扫码:你说多少就多少~
微信扫码
支付宝扫码:你说多少就多少~
支付宝扫码
×