laravel5验证码

来源:互联网 发布:数据丢失 编辑:程序博客网 时间:2024/05/13 12:54

  laravel框架是一个“非常优雅的框架”的框架,但是laravel框架中却没有像TP 以及Ci框架中自带的验证码类,此时就需要引入第三方库,下面我们就开始吧!!!    参考文章链接:http://www.jianshu.com/p/8e4ac7852b5a

效果展示:


代码实现:


在Laravel中有很多图片验证码的库可以使用,本篇介绍其中之一:gregwar/captcha,这个库比较简单,在Laravel中比较常用。下面我们就来介绍下使用细节:

1、首先,进入laravel框架根目录下打开 composer.json中如下加入配置:

[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. "require": {  
  2.         ...  
  3.         "gregwar/captcha""1.*"  
  4.     },  

2、打开cmd进入laravel框架根目录

   执行

[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. composer update  

安装成功!


3、这样就可以使用了

    1、控制器定义方法生成验证码图片

   eg:

[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. <?php  
  2. namespace App\Http\Controllers\Frontend;  
  3. use Illuminate\Http\Request;  
  4. use App\Http\Requests;  
  5. use App\Http\Controllers\Controller;  
  6. use Gregwar\Captcha\CaptchaBuilder;  
  7. use Session;  
  8.   
  9. class RegisterController extends Controller  
  10. {    
  11.   
  12.       
  13.   
  14.     /** 
  15.      * 验证码生成 
  16.      * @param  [type] $tmp [description] 
  17.      * @return [type]      [description] 
  18.      */  
  19.     public function captcha($tmp)  
  20.     {  
  21.         //生成验证码图片的Builder对象,配置相应属性  
  22.         $builder = new CaptchaBuilder;  
  23.         //可以设置图片宽高及字体  
  24.         $builder->build($width = 100, $height = 40, $font = null);  
  25.         //获取验证码的内容  
  26.         $phrase = $builder->getPhrase();  
  27.         //把内容存入session  
  28.         Session::flash('milkcaptcha'$phrase);  
  29.         //生成图片  
  30.         header("Cache-Control: no-cache, must-revalidate");  
  31.         header('Content-Type: image/jpeg');  
  32.         $builder->output();  
  33.     }  
  34.   
  35.        
  36. }  

  2、定义访问路由

   

[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. //生成验证码  
  2. Route::get('/index/captcha/{tmp}''RegisterController@captcha');  

3、前台调用

[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. <img src="{{ URL('index/captcha/1') }}"  alt="验证码" title="刷新图片" width="100" height="40" id="c2c98f0de5a04167a9e427d883690ff6" border="0"> <span> <a id="change" href="javascript:;" code_src=""> 换一张</a></span> </div>  

[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. $("#change").click(function(){  
  2.        $url = "{{ URL('index/captcha') }}";  
  3.        $url = $url + "/" + Math.random();  
  4.        document.getElementById('c2c98f0de5a04167a9e427d883690ff6').src=$url;  
  5.     })  

4、后台验证

[php] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. //验证码检测  
  2.                 if(Session::get('milkcaptcha')!=$code) {  
  3.                 return array("code"=>2,"msg"=>"验证码错误");  
  4.              }   

验证码流程已经走通

下面还有很多方法:

  • 可以将验证码图片保存文件:
<?php$builder->save('out.jpg');
  • 可以直接输出图片到网页:
<?phpheader('Content-type: image/jpeg');$builder->output();
  • 可以生成内联图片:
<img src="<?php echo $builder->inline(); ?>" />

以下演示了其中一种使用方式,直接输出图片到网页。


注:转自woshihaiyong168的博客

0 0