Laravel学习记录--验证码

一,通过第三放库
1.composer引入第三方库
composer require gregwar/captcha
2.准备路由

//验证码
Route::get('random','ProController@random');

3.控制器验证码部分

use Gregwar\Captcha\CaptchaBuilder;
public function random(){
        $builder = new CaptchaBuilder;
        $builder->build();//创建验证码
        session(['random'=>$builder->getPhrase()]);//验证码存储session
        header('Content-type:image/jpeg');
        $builder->output();//输出验证码

   }

4.js部分

<img width="80" height="32" src="{{url('/random')}}" id="imgc">
var imgc = document.getElementById('imgc');
	imgc.onclick=function(){

		this.src+='?';
		// console.log(this.src);
	}

5.新键验证码规则
php artisan make:rule Yzm

<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class Yzm implements Rule
{
    /**
     * Create a new rule instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {    //$value=使用此规则的字段值
        return strtoupper($value) === strtoupper(session('random'));
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        //passes()返回值为false执行
        return '验证码错误';
    }
}

6.使用验证码规则

use App\Rules\Yzm;
protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
            'random'=>['required',new Yzm]//这里使用数组分隔而不是‘|’
        ]);
    }

二,通过js画布

发布了17 篇原创文章 · 获赞 0 · 访问量 452

猜你喜欢

转载自blog.csdn.net/weixin_45143481/article/details/103988474