文档章节

Laravel验证码类库: gregwar/captcha

jichun
 jichun
发布于 2017/09/03 17:33
字数 831
阅读 335
收藏 0

钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>

    laravel框架自身并不携带验证码类,我这里采用开源的gregwar/captcha,来做验证。

    gregwar/captcha的github地址为 https://github.com/Gregwar/Captcha

 

    1、下载 gregwar/captcha 

    (1) 在Laravel根目录(app同级目录)的 composer.json 的 "require"最后添加一行代码,如下代码块所示:


"require": {
    "php": ">=5.6.4",
    "laravel/framework": "5.4.*",
    "laravel/tinker": "~1.0",
     "gregwar/captcha": "1.*" //这一行是新添的,其他代码不用理睬
  },

    (2) cd 至 Laravel根目录,执行 composer update 。若你系统没安装 composer 可参考我写的这篇文章 《windows 与 linux 下composer的安装与常用命令

composer update

    这时候,若安装成功,则\vendor目录下应该有  gregwar 文件夹。

 

    2、生成简易的验证码图文

    (1)添加路由

Route::any('index/login', 'IndexController@login');

    (2)生成验证码

   在 \app\Http\Controllers 目录下的 IndexController.php中,添加如下代码

<?php 
namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Gregwar\Captcha\CaptchaBuilder;//验证码类

class IndexController extends Controller
{
     /**
     * 生成验证码图片
     */
    public function verifycode()
    {

        $builder = new CaptchaBuilder();
        $builder->build($width = 116, $height = 37);//自定义图片宽高 
        session(['loginVerifyCode' => $builder->getPhrase()]); //将验证码存入session,方便登陆验证
        header("Cache-Control: no-cache, must-revalidate");  
        header('Content-Type: image/jpeg');  
        $builder->output(); 

    }

}

(3)前端页面调用验证码图片

在\resources\views\index 目录下,新建login.blade.php 模版。里面关于图片验证码大体代码如下:

<img src="{{url('index/verifycode')}}" data-url="{{url('index/verifycode')}}" class="VerifyCode">

// 引入jquery.js
<script type="text/javascript">

   $('body').on('click','.VerifyCode',function(){
      $(this).attr('src',$(this).data('url') + '?id=' + Math.random());
   });

</script>

验证码图片效果图

    (4)后台验证

在上文提到的  IndexController.php 控制器中,添加login方法(假若post提交至该方法)。

public function login(Request $request)
{
    if ($request->isMethod('post')){
        
        $code = $request->input('code');//post提交后的验证码
        echo ( session()->get('loginVerifyCode') == $code )
                ? '验证码正确'
                : '验证码错误';
    }

}

这时候简单的验证码逻辑,即可走通。

 

3、定制验证码类

(1)改变图文验证码的显示内容,长度

改变验证码显示的内容与长度,有如下2种方法,但其均不支持中文验证码。

    第一种:自己生成验证码内容。写一个生成随机内容的验证码,并在实例化 CaptchaBuilder 时将其作为参数传入即可,如下代码所示。

/**
* 生成验证码图片
*/
public function verifycode()
{

  $builder = new CaptchaBuilder('abcd'); //只是这里多传了个参数,其它代码地方均与上文中的verifycode()方法一模一样
  $builder->build($width = 116, $height = 37);
  session(['loginVerifyCode' => $builder->getPhrase()]);
  header("Cache-Control: no-cache, must-revalidate");  
  header('Content-Type: image/jpeg');  
  $builder->output(); 

}

    你只需传参至new CaptchaBuilder('abcd')中,前端页面即显示"abcd"的验证码。

    第二种:调用类自身方法,生成自定义的验证码。

    gregwar/captcha 生成随机验证码的方法是在 PhraseBuilder类的 build方法。你只需传入自己想要验证码的长度,与生成验证码的内容2个参数即可。简单代码如下

use Gregwar\Captcha\CaptchaBuilder;//验证码类
use Gregwar\Captcha\PhraseBuilder;// 生成验证码内容类

public function verifycode()
  {
     //生成验证码内容. 第一个参数代表长度,第二个则是组成验证码内容的元素
     $phrase = (new PhraseBuilder())->build(4,'abcdefghijkmnpqrstuvwxy3456789');

     $builder = new CaptchaBuilder($phrase);//将生成的验证码传入类中
     $builder->build($width = 116, $height = 37);
     session(['loginVerifyCode' => $builder->getPhrase()]);
     header("Cache-Control: no-cache, must-revalidate");  
     header('Content-Type: image/jpeg');  
     $builder->output(); 
  }

    这里,即可定制长度为 4,内容为'abcdefghijklmnpqrstuvwxyz123456789' 组成的验证码。

jichun
粉丝 0
博文 24
码字总数 9787
作品 0
深圳
私信 提问
加载中
请先登录后再评论。
Laravel验证码

Laravel图片验证码步骤: 1.从github中下载 gregwar/captcha 2.用composer集成到Laravel项目中,集成命令为:在composer.json中“require”中添加,“gregwar/captcha”:"1.*" 在和"require"......

小贵子_IOS
2016/06/23
106
0
PHP验证码类

https://packagist.org/packages/gregwar/captcha 在提交表单的时候为了防止机器操作或者是恶意的攻击,在填写表单的时候一般都用验证码来过滤掉一些非法提交数据。今天给大家介绍一款超实用...

osc_f66lkchr
2019/05/15
1
0
二次开发-如何在PHPEMS引入第三方composer包-验证码实现!

以gregwar/captcha包为例: https://packagist.org/packages/gregwar/captcha 第一步: 下载安装:composer require gregwar/captcha 第二步: 在master.php类文件中引入 requireonce DIR_.'......

高处胜寒
2018/08/04
520
0
徒手解剖composer,简单了解其实现过程

“composer”?,相信很多做PHP工作的对他并不陌生,他是一个针对第三方库管理工具,解决库与库之间的依赖关系等等等,例如一些yii、laravel等框架都搭载着composer来方便管理第三方包和自身...

Eller
2016/11/06
473
1
laravel 验证码

1.找到此文件composer.json 如下图添加 "gregwar/captcha": "1.*" 行代码 2.在命令行中执行 composer update 安装完成后 3.找到控制器添加如下代码 public function captcha($tmp){//生成验证......

骑个蜗牛追宝马
2016/09/23
3
0

没有更多内容

加载失败,请刷新页面

加载更多

关于回归的线性模型的讨论

1. 回归线性模型综述 这篇文章我们来讨论回归问题。回归问题的目标是在给定D维输入(input) 变量x的情况下,预测一个或者多个连续目标(target)变量t的值。 典型的回归问题的例子是:多项式曲线...

osc_0qnrwmy3
刚刚
0
0
阶段回顾

该图片由Heidelbergerin在Pixabay上发布 虽然标题是阶段性回顾,但是现阶段感觉自己也没做啥事,前段时间也是一直在准备研究生开学,近期写了几篇文章感觉还可以,虽然阅读量有点可怜,不过我...

Nicer_
2019/09/08
0
0
删除容器镜像中心的镜像

序言 很久没有思维抖动的时候,就在风吹的一瞬间。。。美滋滋。。。 容器镜像的删除 在使用容器的时候,我们都是自己搭建一个私有的容器镜像环境,一般使用的镜像也就是registry了,用来保存...

SRE运维实践
2018/09/11
0
0
java 填充 pdf 表单

maven <dependency> <groupId>com.itextpdf</groupId> <artifactId>forms</artifactId> <version>7.1.11</version></dependency> 示例代码: public class AwardGenera......

lemos
1分钟前
0
0
Mysql----左连接、右连接、内连接、全连接的区别

  最近,突然想起来数据库有好些时间没用到,所以,想把数据库有关的知识回顾一下,所以接下来这个月,基本上会以数据库的帖子来写为主,首先,很多同学都会有个错觉,觉得学习数据库会sql...

osc_kedi1mvz
1分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部