laravel5.4生成验证码

 

总结:本篇博客介绍使用gregwar/captcha实现验证码的具体操作步骤,以及可能遇到的问题和解决办法。

转载请注明出处!!!
本文地址:http://www.cnblogs.com/zbokett/p/7287235.html

操作步骤:

1, 在laravel5.4项目根目录下找到 composer.json 这个文件,

添加  "gregwar/captcha": "dev-master"  和  "Gregwar\\Captcha\\": "vendor/Captcha/"  到composer.json文件中,如下图所示,

接下来,在项目根目录执行composer update,然后再执行composer dump-autoload 命令。

第二种方法:

添加

"gregwar/captcha": "1.*"  到composer.json这个文件中,如下图所示。

2. 然后打开命令行,找到项目的根目录,运行composer update,

可以看到这个扩展库已经下载好了,

3.接下来,就可以正常使用验证码了,

先定义路由:

接下来,介绍两种显示验证码的情况,

一:直接在网页上输出验证码图片

在控制层里新建一个codeController.php, 1 <?php  2 namespace App\Http\Controllers;

 3
4 use App\Http\Requests;
5 use App\Http\Controllers\Controller;
6
7 use Illuminate\Http\Request;
8
9 //引用对应的命名空间
10 use Gregwar\Captcha\CaptchaBuilder;
11 use Session;
12 class CodeController extends Controller{
13 public function captcha($temp)
14 {  
15 $builder = new CaptchaBuilder();
16 $builder->build(150,32);
       //获取验证码内容
17 $phrase = $builder->getPhrase();
18 //把内容存入session
19 Session::flash('milkcaptcha', $phrase); //存储验证码
20 ob_clean(); //清除缓存
21 return response($builder->output())->header('Content-type','image/jpeg'); //把验证码数据以jpeg图片的格式输出
22 }
23
24 }

然后在浏览器里访问之前定义好的路由,直接访问这个方法,就能看到输出的验证码了

第二种方法:在表单里显示验证码,把上面该文件路径写到<img>标签的src属性中,

显示如下:

这里有两个问题需要注意,照着下面的方法去直接输出验证码,你会发现验证码显示不出来,反而是一堆乱码,

public function code($tmp)
{
//生成验证码图片的Builder对象,配置相应属性
$builder = new CaptchaBuilder;
//可以设置图片宽高及字体
$builder->build($width = 100, $height = 40, $font = null);
//获取验证码的内容
$phrase = $builder->getPhrase();
//把内容存入session
Session::flash('milkcaptcha', $phrase);
//生成图片
header("Cache-Control: no-cache, must-revalidate");//清除缓存
header('Content-Type: image/jpeg');
$builder->output();
}

输出一下$phrase,发现验证码内容已经获取到了,是图片生成部分出的问题,

// header("Cache-Control: no-cache, must-revalidate"); 这行代码的作用是清除缓存,防止出现验证码不能刷新或显示不出来的情况,
但是并没有起作用,改用 ob_clean(); 去清除浏览器缓存。

然后是

header('Content-Type: image/jpeg');
$builder->output();

这两句话的问题,

$builder->output();
返回的只是验证码图片的一些信息,并不是一张图片,所以当把它直接输出时,出来的并不是一张图片, 只有这样写 $buildGer->output()->header('Content-type','image/jpeg') 直接输出的时候,才会以图片的形式直接输出验证码。

当把它放到<img>的src属性中,<img>标签会自动以图片的格式输出它,也就是说

header('Content-type','image/jpeg')

这时候这句话是没必要的,所以不管是

$buildGer->output())->header('Content-type','image/jpeg')

这样写,还是

header('Content-Type: image/jpeg');
$builder->output();

这样写,结果都会显示验证码图片。

原文地址:http://www.cnblogs.com/zbokett/p/7287235.html

 

laravel5.4生成验证码的更多相关文章

  1. 动态生成验证码———MVC版

    上面有篇博客也是写的验证码,但那个是适用于asp.net网站的. 今天想在MVC中实现验证码功能,弄了好久,最后还是看博友文章解决的,感谢那位博友. 首先引入生成验证码帮助类. ValidateCod ...

  2. laravel 生成验证码的方法

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

  3. java web学习总结(九) -------------------通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:

  4. android 生成验证码图片

    (转自:http://blog.csdn.net/onlyonecoder/article/details/8231373) package com.nobeg.util; import java.u ...

  5. PHP 动态生成验证码

    ……机器人会在网站中搜寻允许他们插入广告的输入表单,在虚拟世界没有什么能阻挡它们胡作非为.这些机器人效率极高,完全不关心所攻击的表单的本来用途.它们唯一的目标就是用它们的垃圾广告覆盖你的内容,残忍地为 ...

  6. PHP生成验证码及单实例应用

    /* note: * this 指向当前对象本身 * self 指向当前类 * parent 指向父类 */ /* 验证码工具类 * @author pandancode * @date 20150- ...

  7. ASP.NET ashx实现无刷新页面生成验证码

    现在大部分网站登陆时都会要求输入验证码,在网上也看了一些范例,现在总结一下如何实现无刷新页面生成验证码. 效果图: 实现方式: 前台: <div> <span>Identify ...

  8. PHP-仿ecshop生成验证码

    <?php /* 生成验证码 */ // 1.创建画布(基于已有图像) $n = mt_rand(1,5); $im = imagecreatefromjpeg('./images/captch ...

  9. Java生成验证码原理(jsp)

     验证码的作用: 验证码是Completely Automated Public Turing test to tell Computers and Humans Apart(全自动区分计算机和人类的 ...

随机推荐

  1. CTBS问题百科

    1.浏览CTBS网站时,Service Unavailable或应用程序池自动停止的现象 解决方法: 点击"开始"-"控制面板"-"管理工具" ...

  2. Dynamics CRM 2011/2013 DeveloperToolkit的使用

    Dynamic CRM 2011的SDK中提供了一个叫DeveloperToolkit的工具,他的用途官方说明说的很明确,能方便开发者在VS中直接部署webresource.plugin.workfl ...

  3. Java之美[从菜鸟到高手演变]之设计模式二

    在阅读过程中有任何问题,请及时联系:egg. 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 如有转载,请说明出处:http://blog.csdn. ...

  4. ffplay的快捷键以及选项

    ffplay是ffmpeg工程中提供的播放器,功能相当的强大,凡是ffmpeg支持的视音频格式它基本上都支持.甚至连VLC不支持的一些流媒体都可以播放(比如说RTMP),但是它的缺点是其不是图形化界面 ...

  5. 【翻译】提示18——如何决定ObjectContext的生命周期

    原文地址:http://blogs.msdn.com/b/alexj/archive/2009/05/07/tip-18-how-to-decide-on-a-lifetime-for-your-ob ...

  6. iOS中UIKit的外观属性及方法汇总

    这里将UIKit的外观属性及方法从头文件中抽取出来,以便查找及熟悉.(更新到iOS 8.0,从A-Z排序) UIActivityIndicatorView @property (readwrite,  ...

  7. C语言之归并排序

    即将两个都升序(或降序)排列的数据序列合并成一个仍按原序排列的序列. 上代码: #include <stdio.h> #include <stdlib.h> #define m ...

  8. LeetCode之“动态规划”:Dungeon Game

    题目链接 题目要求: The demons had captured the princess (P) and imprisoned her in the bottom-right corner of ...

  9. Linux文件内容查阅 - cat, tac, nl, more, less, head, tail, od

    cat 由第一行开始显示文件内容 tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写! nl 显示的时候,顺道输出行号! more 一页一页的显示文件内容 less 与 more 类似 ...

  10. source insight 中tab键的设置

    转:http://xinzero.com/source-insight-code-alignment-ended.html source insight代码对齐Tab键终极版 以前也写过一个sourc ...