5月 11, 2017 - 开发笔记, 有料    2 Comments

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

评论被关闭。