laravel5.1中验证码类gregwar/captcha
laravel强大的第三方类是其利器,下面介绍一个项目中常用到的验证码类:
需要准备工作:
1) 安装composer文件
2)laravel 5.1.33
3) 模板文件
所需知识点:
laravel基础的使用和composer的常用命令
我们需要到http:packagist.org这个网站上找到gregwar/captcha这个扩展,我们可以根据他的版本使用composer工具把它引入到项目中,
composer require gregwar/captcha会默认下载最新版本信息
下载完毕,准备控制器和方法:
php artisan make:controller CaptchaController –plain
Route::get(‘captcha’, ‘CaptchaController@captcha’);
控制器中准备好方法,记得要在控制器中use Gregwar/Captcha/CaptchaBuilder 然后看他的使用方法:
public function captcha(){
$builder =new CaptchaBuilder; //获取实例对象
$builder->build($width = 80, $height = 36, $font = null); //创建一个验证码实例
$a = $builder->getPhrase(); // 获取验证码的内容
Session::put(‘imgcode’,$a); //将内容存入session,注意session中不能直接识别对象,所以要转成变量的形式
header(‘Content-type: image/jpeg’);
$builder->output(); //输出到模板中 }
我们可以在模板中利用url方法实现验证码的显示,还可以给它加一个点击事件实现点击刷新
<img src=”{{url(‘captcha’)}}” alt=”” class=”code_img” onclick=”this.src='{{url(‘captcha’)}}?’ + Math.random()”>
因为我们使用的是laravel授权类,我们需要获取输入的验证码内容并且有了对比,我们可以把\Illuminate\Foundation\Auth\AuthenticatesUsers.php 的postLogin 方法进行修改,
if($rep->all()[‘captcha’]) !== $request->session()->get(‘captcha’){
return back()->with(‘msg’,’验证码错误’);
}
如果输入争取的验证码能够登陆注册成功,说明验证码类成功使用,如果失败可以在模板输出错误信息
@if(session(‘msg’))
{{sesion(‘msg’)}}
@endif