mews/captcha

Laravel 5/6/7/8/9/10/11 验证码包

安装次数: 3,670,889

依赖项: 101

建议者: 2

安全: 0

星标: 2,436

关注者: 60

分支: 451

开放问题: 130

类型:

3.4.3 2024-09-10 05:40 UTC

README

Build Status Scrutinizer Code Quality Latest Stable Version Latest Unstable Version License Total Downloads

一个简单的Laravel 5/6服务提供者,用于包含Captcha for Laravel

适用于Laravel 4 Captcha for Laravel Laravel 4

适用于Laravel 5至9 Captcha for Laravel Laravel 4

预览

Preview

安装

可以使用Composer通过要求mews/captcha包,并将你的项目composer.json中的minimum-stability设置为dev(适用于Laravel 5)来安装Captcha服务提供者。

{
    "require": {
        "laravel/framework": "5.0.*",
        "mews/captcha": "~3.0"
    },
    "minimum-stability": "stable"
}

或者

使用composer要求此包

composer require mews/captcha

使用composer update更新你的包或使用composer install安装。

在Windows上,您需要在php.ini中包含GD2 DLL php_gd2.dll。您还需要包含php_fileinfo.dllphp_mbstring.dll以满足mews/captcha依赖项的要求。

用法

要使用Captcha服务提供者,您必须在启动Laravel应用程序时注册提供者。有几种基本方法可以做到这一点。

config/app.php中找到providers键并注册Captcha服务提供者。

    'providers' => [
        // ...
        'Mews\Captcha\CaptchaServiceProvider',
    ]

对于Laravel 5.1+

    'providers' => [
        // ...
        Mews\Captcha\CaptchaServiceProvider::class,
    ]

config/app.php中找到aliases键。

    'aliases' => [
        // ...
        'Captcha' => 'Mews\Captcha\Facades\Captcha',
    ]

对于Laravel 5.1+

    'aliases' => [
        // ...
        'Captcha' => Mews\Captcha\Facades\Captcha::class,
    ]

对于Laravel 11:您无需添加别名,它将自动添加。

配置

自定义设置

要使用自己的设置,发布配置。

$ php artisan vendor:publish

config/captcha.php

return [
    'default'   => [
        'length'    => 5,
        'width'     => 120,
        'height'    => 36,
        'quality'   => 90,
        'math'      => true,  //Enable Math Captcha
        'expire'    => 60,    //Captcha expiration
    ],
    // ...
];

禁用验证

要禁用验证码验证,请使用CAPTCHA_DISABLE环境变量。例如:.env配置

CAPTCHA_DISABLE=true

示例用法

会话模式

    // [your site path]/Http/routes.php
    Route::any('captcha-test', function() {
        if (request()->getMethod() == 'POST') {
            $rules = ['captcha' => 'required|captcha'];
            $validator = validator()->make(request()->all(), $rules);
            if ($validator->fails()) {
                echo '<p style="color: #ff0000;">Incorrect!</p>';
            } else {
                echo '<p style="color: #00ff30;">Matched :)</p>';
            }
        }
    
        $form = '<form method="post" action="captcha-test">';
        $form .= '<input type="hidden" name="_token" value="' . csrf_token() . '">';
        $form .= '<p>' . captcha_img() . '</p>';
        $form .= '<p><input type="text" name="captcha"></p>';
        $form .= '<p><button type="submit" name="check">Check</button></p>';
        $form .= '</form>';
        return $form;
    });

Laravel方式视图文件中的详细示例

    //register.blade.php
    <img src="{{ captcha_src() }}" alt="captcha">
        <div class="mt-2"></div>
        <input 
            type="text" name="captcha" class="form-control @error('captcha') is-invalid @enderror" placeholder="Please Insert Captch"
            >
         @error('captcha') 
         <div class="invalid-feedback">{{ $message }}</div> @enderror 

控制器文件

        Validator::make($input, [
            'name' => ['required', 'string', 'max:255'],
            'email' => [
                'required',
                'string',
                'email',
                'max:255',
                Rule::unique(User::class),
            ],
            'password' => $this->passwordRules(),
            'captcha' => 'required|captcha'
        ])->validate();

无状态模式

从此URL http://localhost/captcha/api/math 获取密钥和图片,并使用此方法验证验证码

    //key is the one that you got from json response
    // fix validator
    // $rules = ['captcha' => 'required|captcha_api:'. request('key')];
    $rules = ['captcha' => 'required|captcha_api:'. request('key') . ',math'];
    $validator = validator()->make(request()->all(), $rules);
    if ($validator->fails()) {
        return response()->json([
            'message' => 'invalid captcha',
        ]);

    } else {
        //do the job
    }

返回图片

captcha();

或者

Captcha::create();

返回URL

captcha_src();

或者

Captcha::src('default');

返回HTML

captcha_img();

或者

Captcha::img();

使用不同的配置

captcha_img('flat');

Captcha::img('inverse');

等。

基于Intervention Image

^_^

链接