Laravel文档阅读笔记-mews/captcha的使用(验证码功能)

本文介绍如何在Laravel8中实现验证码功能,包括安装mews/captcha库、配置验证码参数及前后端集成验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里用的是Laravel8。

这里验证码要使用到fileInfo的功能,需要提前让php加载此dll or so,在php.ini中修改:

验证码功能最终实现的效果是:

 

首先添加相关库:

composer require mews/captcha --ignore-platform-req=ext-fileinfo

 其次再生成对应的config文件:

php artisan vendor:publish

输入你那边mews/captcha相关的选项:

我这里是选项11。

默认验证码为9位,这里太多了,看不清,修改下captcha.php

<?php

return [
    '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' => 5,
        'width' => 120,
        'height' => 36,
        'quality' => 90,
        'math' => false,
        'expire' => 60,
        'encrypt' => false,
    ],
    ......
    ......
];

这里default.length的大小本来是9的,我改成了5。

生成对应的Controller

php artisan make:controller CaptchaValidationController

在CaptchaValidationController.php中生成验证码:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class CaptchaValidationController extends Controller
{
    public function reloadCaptcha()
    {
        return response()->json(['captcha'=> captcha_img()]);
    }
}

这里这个Controller就是验证码服务了。就完成了。

下面是使用。

前端:

JS相关:

<script type="text/javascript">

    $('#captchaImg').click(function(){
        $(this).prop('src',"{{captcha_src()}}" + Math.random(1000,9999));
    });
</script>

 HTML相关:

<div class="row">
	<div class="col" style="max-width: 140px">
		<img src="{{ captcha_src() }}" id="captchaImg" >
	</div>
	<div class="col pull-left ">
		<input type="text" autocomplete="off" placeholder="验证码" id="captcha" class="form-control" name="captcha">
	</div>
</div>

后端:

public function customLogin(Request $request)
    {
        $request->validate([
            'email' => 'required|email',
            'password' => 'required|min:6|max:128',
            'captcha' => 'required|captcha'
        ]);
		......
		......
}

这里Laravel自己做了处理,我们只要添加了captcha,就可以了。这里感觉比其他语言少写了好多逻辑判断代码。

错误 "Class 'Mews\Captcha\CaptchaServiceProvider' not found" 通常发生在使用 Laravel 框架时,尝试注册一个不存在的服务提供者时。这意味着你的应用程序试图使用一个名为 `Mews\Captcha\CaptchaServiceProvider` 的服务提供者,但是 PHP 类加载器无法找到对应的类文件。 为了解决这个问题,可以按照以下步骤操作: 1. 确认 `mews/captcha` 包是否已经通过 Composer 正确安装。可以通过运行 `composer show` 查看是否列出了 `mews/captcha` 包,或者通过 `composer require mews/captcha` 来安装它。 2. 检查 `config/app.php` 文件中的服务提供者数组,确保 `Mews\Captcha\CaptchaServiceProvider::class` 正确地添加在了数组里。例如: ```php 'providers' => [ ... Mews\Captcha\CaptchaServiceProvider::class, ... ] ``` 3. 如果你确定 `mews/captcha` 包已经被安装,但是仍然遇到这个问题,可能是因为自动加载配置没有正确设置。确保 `composer.json` 文件中的 `autoload` 部分包含了正确的 PSR-4 自动加载规则。例如: ```json "autoload": { "psr-4": { "Mews\\Captcha\\": "path/to/your/captcha/package/src/" } } ``` 更新自动加载配置后,运行 `composer dump-autoload` 来重新生成 `autoload.php` 文件。 4. 如果你手动创建了 `CaptchaServiceProvider` 类,确保类文件位于正确的位置,并且类命名空间与文件路径匹配。 5. 如果上述步骤都无法解决问题,检查是否有任何拼写错误或者文件/目录权限问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值