一,通过第三放库
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画布