laravel 使用mews/captcha拓展包实现验证码的生成与验证
发布时间:2018-12-20 14:03:23作者:wangjian浏览量:1270点赞量:0
一:安装mews/captcha拓展包
mews/captcha 是一个非常易于集成的图片验证码扩展包,使用此扩展包可以分分钟给你的网站加上验证码功能,mews/captcha拓展包地址:https://github.com/mewebstudio/captcha
注意:在Windows中,您的php.ini中需要包含php_gd2.dll,php_fileinfo.dll,php_mbstring.dll以满足mews/captcha依赖性的要求
composer require mews/captcha
二:生成验证码配置文件
执行
php artisan vendor:publish --provider="Mews\Captcha\CaptchaServiceProvider"
这时候会在config目录下生成一个captcha.php的验证码配置文件
<?php
return [
'characters' => '2346789abcdefghjmnpqrtuxyzABCDEFGHJMNPQRTUXYZ',
'default' => [
'length' => 5,
'width' => 120,
'height' => 36,
'quality' => 90,
],
'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,
]
];
三:生成验证码
mews/captcha拓展包提供了两个函数用于生成并展示验证码
1:返回 img 格式的验证码(生成的是一个包含验证码的img标签)
captcha_img();//使用默认的验证码配置生成验证码并返回img格式
captcha_img('flat');//使用指定的验证码配置生成验证码并返回img格式
在html中调用:
{!! captcha_img() !!}
也可以在php端直接调用在传到前端
2:返回验证码的 url 地址
captcha_src();//使用默认的验证码配置生成验证码并返回url格式
captcha_src('flat');//使用指定的验证码配置生成验证码并返回url格式
在html中调用:
{{captcha_src()}}
也可以在php端直接调用在传到前端
3:验证码生成并展示的完整展示:
<form name="form" action="/check" method="post">
<img src="{{ captcha_src('flat') }}" onclick="this.src='/captcha/flat?'+Math.random()" title="点击图片重新获取验证码">
<input type="text" name="captcha">
{{csrf_field()}}
@if($errors->has('captcha'))
<span>{{$errors->first('captcha')}}</span>
@endif
<input type="submit" value="验证"/>
</form>
四:验证码验证
1:使用验证码规则验证
public function check(Request $request)
{
$data = $request->all();
$rules = [
'captcha' => 'required|captcha',//required表示必填 captcha表示进行验证码验证
];
// 自定义消息
$messages = [
'captcha.required' => '请输入验证码',
'captcha.captcha' => '请输入正确验证码',
];
//对验证码字段进行验证
$validator = \Validator::make($data, $rules, $messages);
if($validator->passes()){
//验证通过
}else{
//验证失败
//$validator->errors() 获取错误信息
//返回上个页面并将错误信息返回到页面上
return back()->withErrors($validator);
}
}
2:直接使用拓展包的captcha_check函数验证
public function check(Request $request)
{
$data = $request->all();
//对验证码进行验证,验证通过返回true,失败返回false
$capt = captcha_check($data['captcha']);
if($capt){
//验证成功
}else{
//验证失败
}
}
通过上面的学习,验证码实现成功