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放在一个目录下面,在验证码类文件中加上 ...
随机推荐
- python3的一些文件操作的脚手架
用python把原来的脚本重构了一下,其中写了文件操作的一些函数,如下: import os import shutil import hashlib import stat #查找文件夹中的某个文件 ...
- VSCode使用Remote-SSH远程服务器
VSCode的Remote-SSH 之前一直使用的xshell5,现在在window上必须要升级方可使用,在mac上没法安装学习版.于是就想着vscode能不能实现这一需求. 微软开发了一个VSCod ...
- asp.net运行原理及机制
当一个HTTP请求到服务器并被IIS接收到之后,IIS首先通过客户端请求的页面类型为其加载相应的.dll文件,然后在处理过程中将这条请求发送给能够处理这个请求的模块.在ASP.NET 3.5中,这个模 ...
- EditPlus配置Java编译器
一.环境说明 系统: windows 7 64位 editplus version: 4.3 二.设置步骤 打开工具中的配置用户工具: 找到用户工具User tools,点击组名Group Name ...
- 官宣!VS Code Python 全新功能在 PyCon China 全球首发!
北京时间 2019 年 9 月 21 日,PyCon China 2019 在上海举行. 在下午的演讲中,来自微软开发工具事业部的资深研发工程师 在演讲中,我们看到了 Azure Notebook 与 ...
- window常见事件onload
1, window.onload 是窗口(页面)加载事件,当文档内容完全加载完成会触发该事件(包括图像,脚本文件,css文件等),就调用的处理函数 下面的代码,当点击按钮,并不会弹出对话框,因为页面还 ...
- issue - 登录前的信息和标识文件
DESCRIPTION (描述) /etc/issue 是一个文本文件,它包含了在登录提示符出现之前显示的信息或者系统标识.如果 getty(1) 支持的话,它可能包括多个 @char 和 \char ...
- SpringBootMVC04——Mybatis
简介 MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statement. ...
- crontab定时执行shell脚本
步骤一 首先我们先看一下是否安装了crontab.一般情况下linux系统会自带crontab及crond.如果没有安装,请使用以下指令安装:yum install vixie-cron ...
- P1058 立体图题解
小渊是个聪明的孩子,他经常会给周围的小朋友们将写自己认为有趣的内容.最近,他准备给小朋友们讲解立体图,请你帮他画出立体图. 小渊有一块面积为m \times nm×n的矩形区域,上面有m \times ...