legend3---laravel验证码使用
legend3---laravel验证码使用
一、总结
一句话总结:
1、先用composer下载好captcha扩展:配置好composer.json然后运行composer update
2、引入下载好的captcha库:use Gregwar\Captcha\CaptchaBuilder;
1、lavarel中如何安装captcha库?
1、添加"gregwar/captcha": "1.*" 到composer.json这个文件中
2、在composer.json这个文件夹中打开命令行,运行composer update,
2、验证码点击自动刷新?
js中让img的src刷新:<div class="yz"><img src="{:captcha_src()}" οnclick="this.src=this.src+'?t='+Math.random()";></div>
3、img onclick="this.src=this.src+'?t='+Math.random()" src="{{url('/captcha')}}" alt="验证码图片" 点击刷新验证码的问题是什么,及如何解决?
因为是+'?t='+Math.random(),所以参数会越来越长
解决的话就用js函数,直接原验证码地址拼接就好
<img onclick="this.src=this.src+'?t='+Math.random()" src="http://legend3.com/captcha?t=0.27718960257251046?t=0.3208799525313262?t=0.5162236173489758?t=0.02132425618744005?t=0.9973185649191607?t=0.9189521155309017" alt="验证码图片">
<img onclick="re_captcha(this)" src="{{url('/captcha')}}" alt="验证码图片"> <script>
//验证码刷新函数
function re_captcha(m_this){
let url="{{url('/captcha')}}";
m_this.src=url+'?t='+Math.random();
}
</script>
二、laravel5.4生成验证码
转自或参考:laravel5.4生成验证码
https://www.cnblogs.com/meng1314-shuai/p/7309445.html">laravel5.4生成验证码
操作步骤:
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();
这样写,结果都会显示验证码图片。
三、验证码简单实例
1、添加"gregwar/captcha": "1.*" 到composer.json这个文件中
2、在composer.json这个文件夹中打开命令行,运行composer update,
<?php namespace App\Http\Controllers\Home\Login; use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Gregwar\Captcha\CaptchaBuilder; class RegController extends Controller
{
// 注册页
public function index(){
return view('home.login.register');
} // 注册处理操作
public function check(Request $request){ } // 验证码
public function captcha(Request $request){
$builder = new CaptchaBuilder();
$builder->build(150,32);
//获取验证码内容
$phrase = $builder->getPhrase();
//把内容存入session
$request->session()->flash('milkcaptcha', $phrase); //存储验证码
ob_clean(); //清除缓存
return response($builder->output())->header('Content-type','image/jpeg'); //把验证码数据以jpeg图片的格式输出
} }
legend3---laravel验证码使用的更多相关文章
- Laravel - 验证码(captcha)
首先,登录网址 packagist.org 查找 laravel captcha,找到mews/captcha ,根据 packagist 上的使用方法一步步来实现验证码的安装.配置composer. ...
- laravel 验证码 auth方式登录 中间件判断session是否存在
首先下载laravel的插件 composer下载 实现验证码 composer require mews/captcha 在config/app.php进行配置 'providers' ...
- laravel验证码
登录验证码 1.首先,进入https://github.com/mewebstudio/captcha,根据captcha上的使用方法一步步来实现验证码的安装,因为是laravel5.7,所以选择了c ...
- laravel 验证码手机与提交手机的验证?
假如我用自己的手机号码获得了验证码,然后在点击提交之前,更换了手机号一栏的input,用一个比如18888888888的手机号进行注册,用之前得到的验证码,是不是会出现注册成功的情况?是否应该考虑验证 ...
- laravel 验证码使用示例
一.去https://packagist.org/网站搜索验证码的代码依赖,关键词:captcha 地址:https://packagist.org/packages/mews/captcha 二.环 ...
- Laravel - 验证码
安装扩展包 使用 Composer 安装: composer require "mews/captcha:~2.0" 运行以下命令生成配置文件 config/captcha.php ...
- TODO:Laravel增加验证码
TODO:Laravel增加验证码1. 先聊聊验证码是什么,有什么作用?验证码(CAPTCHA)是"Completely Automated Public Turing test to te ...
- laravel 生成验证码的方法
在Laravel中有很多图片验证码的库可以使用,本篇介绍其中之一:gregwar/captcha,这个库比较简单,在Laravel中比较常用.下面我们就来介绍下使用细节: 首先, composer.j ...
- laravel中如何写验证码文件,并防止中文乱码.
本例为生成中文验证码,专为laravel而生. //控制器: public function getVcode(Request $request){ $width=845; $height=125; ...
- laravel加入验证码类几种方法 && Laravel引入第三方库的方法
1,使用require , inlcude 的方法将验证码类文件包含进来,再进行new 2,将验证码类文件放于Http目录下面,也就是和控制器controller放在一个目录下面,在验证码类文件中加上 ...
随机推荐
- vue 实践技巧合集
前言 本文纯属个人平时实践过程中的一些经验总结,算是一点点小技巧吧,不是多么高明的技术,如果对你有帮助,那么不胜荣幸. 本文不涉及罕见API使用方法等,大部分内容都是基于对vue的一些实践而已.由于涉 ...
- day16 常用模块 sys os json pickle
知识点 os:和操作系统相关sys:和解释器相关 json:和操作JSON(一种数据交换格式)相关pickle:序列化 hashlib:加密算法Collections:集合类型 ...
- mysql联合索引如何创建
例如: CREATE TABLE `test` ('aaa' varchar(16) NOT NULL default '', 'bbb' varchar(16) NOT NULL default ' ...
- HDU 1789 Doing Homework again(排序,DP)
Doing Homework again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- Day2_数字类型_字符串类型_列表类型
数字类型: 作用:年纪,等级,薪资,身份证号等: 10进制转为2进制,利用bin来执行. 10进制转为8进制,利用oct来执行. 10进制转为16进制,利用hex来执行. #整型age=10 prin ...
- Freemarker模板的使用简介
需要的jar包: 在pom.xml文件中贴入 <dependency> <groupId>junit</groupId> <artifactId>jun ...
- wex5 如何导包
wex5中 导jar包 要先把jar文件放在: E:\WeX5\runtime\BaasServer\WEB-INF\lib目录中(我wex5放的是E盘) 点击项目 --> 属性 --> ...
- 编写优秀 CSS 代码的 8 个策略
编写基本的CSS和HTML是我们作为Web开发人员学习的首要事情之一.然而,我遇到的很多应用程序显然没有人花时间真正考虑前端开发的长久性和可维护性. 我认为这主要是因为许多开发人员对组织CSS / H ...
- 采购合同的条件价格取值逻辑(如ME35K/ME3M显示报表的多个日期范围的条件价格)
1.根据采购订单合同和行项目和类型(合同是M)在A016表中取值条件号, 2.根据A016的条件号在KONP中取得价格 ME35K.ME3M的增强点在子程序LMEREPI02下的 METHOD if ...
- killall - 以名字方式来杀死进程
SYNOPSIS (总览) killall [-egiqvw] [-signal] name ... killall -l killall -V DESCRIPTION (描述) killall 发送 ...