文档章节

Laravel验证码类库: gregwar/captcha

jichun
 jichun
发布于 2017/09/03 17:33
字数 831
阅读 38
收藏 0
点赞 0
评论 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
博文 21
码字总数 8474
作品 0
深圳
Laravel验证码

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

小贵子_IOS
2016/06/23
82
0
laravel 5.6 登录验证码 captcha 引入

用户登陆注册, 不管前台后台, 如果掌握了手机短信和图形验证码, 那安全性会好很多, PHP上常见有两个captcha图形验证方式, gregwar/captcha和mews/captcha 参考下面的连接,用mews/capt...

天飞
04/23
0
0
TTboy/laravelcms

laravelPCMS V1.6.0 下载 2016-12-29 发布 基于 laravel5.2 的PHP内容管理系统 后台基于AdminLTE主题 前端组件Vue.js 集成基础的微信相关功能。是一个可以快速上手,项目开发的首选工具。 博...

TTboy
2017/03/03
0
0
徒手解剖composer,简单了解其实现过程

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

Eller
2016/11/06
164
1
Laravel验证码工具gregwar/captcha

Ps:gregwar/captcha在Composer下载排行中长居第一名榜位。好用的工具大家都推荐,这个验证码工具作者本人也在很多项目中运用到了。给大家推荐的同时分享点经验。 一、安装方法 1.在项目根目录...

High_Mountain
2017/03/25
0
0
Laravel 第三方扩展 整理

1, Laravel 中的验证码功能 我们将以第三方扩展包 mews/captcha 作为基础来实现 Laravel 中的验证码功能。我们将以第三方扩展包 mews/captcha 作为基础来实现 Laravel 中的验证码功能。 comp...

U_KNOW
2017/12/13
0
0
TODO:Laravel增加验证码

TODO:Laravel增加验证码 1. 先聊聊验证码是什么,有什么作用? 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和...

OneTODO
2016/12/22
37
0
Laravel-5.1 ---- 将mews captcha整合到项目中!

经过摸索,终于能在laravel 5.1中应用验证码了。 因为英语渣五水平,所以几乎没搜索到什么有用的,于是考虑在github上搜索验证码包! 提示: github上的package中往往会有使用说明,照着上面...

mdoo
2015/10/09
101
0
请教验证码刷新的问题

1.今得一验证码类库,配置如何: jcaptcha com.octo.captcha.module.servlet.image.SimpleImageCaptchaServlet jcaptcha /jcaptcha....

Macrotea
2011/05/24
1K
6
Google Kaptcha生成图形验证码

google captcha 是google生成验证码的一个工具类,其原理是将随机生成字符串保存到session中,同时以图片的形式返回给页面,之后前台页面提交到后台进行对比。 依赖库可以去maven repositor...

Victor_Cindy1
2017/11/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周一乱弹 —— 如果是你喜欢的女同学找你借钱

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享Michael Learns To Rock的单曲《Fairy Tale》 《Fairy Tale》- Michael Learns To Rock 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
34分钟前
9
3
NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0
[机器学习]回归--Decision Tree Regression

CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很...

wangxuwei
昨天
1
0
Redis做分布式无锁CAS的问题

因为Redis本身是单线程的,具备原子性,所以可以用来做分布式无锁的操作,但会有一点小问题。 public interface OrderService { public String getOrderNo();} public class OrderRe...

算法之名
昨天
11
0
143. Reorder List - LeetCode

Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前后两部分,将后部...

yysue
昨天
1
0
数据结构与算法1

第一个代码,描述一个被称为BankAccount的类,该类模拟了银行中的账户操作。程序建立了一个开户金额,显示金额,存款,取款并显示余额。 主要的知识点联系为类的含义,构造函数,公有和私有。...

沉迷于编程的小菜菜
昨天
1
0
从为什么别的队伍总比你的快说起

在机场候检排队的时候,大多数情况下,别的队伍都要比自己所在的队伍快,并常常懊悔当初怎么没去那个队。 其实,最快的队伍只能有一个,而排队之前并不知道那个队快。所以,如果有六个队伍你...

我是菜鸟我骄傲
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部