Laravel框架验证码类用法实例分析


Posted in PHP onSeptember 11, 2019

本文实例讲述了Laravel框架验证码类用法。分享给大家供大家参考,具体如下:

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

首先, composer.json中如下加入配置:

"require": {
...
"gregwar/captcha": "1.*"
},

然后,已成习惯的命令:

composer update

接下来就可以正常使用了,根据具体的开发需求,可以有很多种方式去使用。

可以将验证码图片保存文件:

<?php
$builder->save('out.jpg');

可以直接输出图片到网页:

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

可以生成内联图片:

<img src="<?php echo $builder->inline(); ?>" />

以下演示了其中一种使用方式,直接输出图片到网页。

我定义了一个Controller:

<?php
namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
//引用对应的命名空间
use Gregwar\Captcha\CaptchaBuilder;
use Session;
class KitController extends Controller {
  /**
   * Display a listing of the resource.
   *
   * @return Response
   */
  public function captcha($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();
  }
}

下面我们可以设置相应的router访问这个验证码图片, 修改router.php:

Route::get('kit/captcha/{tmp}', 'KitController@captcha');

现在可以通过具体的url,可以访问看到这张图片了

验证码

表单内部写的比较简单,看看即可:

<input type="text" name="captcha" class="form-control" style="width: 300px;">
<a onclick="javascript:re_captcha();" ><img src="{{ URL('kit/captcha/1') }}" alt="验证码" title="刷新图片" width="100" height="40" id="c2c98f0de5a04167a9e427d883690ff6" border="0"></a>
<script>
 function re_captcha() {
  $url = "{{ URL('kit/captcha') }}";
    $url = $url + "/" + Math.random();
    document.getElementById('c2c98f0de5a04167a9e427d883690ff6').src=$url;
 }
</script>

最后就是在form提交页面验证相应验证码,库中也为我们提供了相应方法:

$userInput = $request->get('captcha');
if($builder->testPhrase($userInput)) {
  //用户输入验证码正确
  return '您输入验证码正确';
} else {
  //用户输入验证码错误
  return '您输入验证码错误';
}

至此,验证码就完成了。 如有疑问,欢迎回复探讨。

补充

在form表单提交验证的代码写的比较草率,给读者带来了歧义,在此有个补充(感谢 一块黄布 的回复):

$builder->testPhrase($userInput) 这里的$builder与生成验证码的$builder为同一个,如果重新new,则一直会验证失败。我们可以从源码中看到:

public function testPhrase($phrase)
{
 return ($this->builder->niceize($phrase) == $this->builder->niceize($this->getPhrase()));
}

验证码正确性判断,也可以由下列方式来验证:

$userInput = \Request::get('captcha');
if (Session::get('milkcaptcha') == $userInput) {
  //用户输入验证码正确
  return '您输入验证码正确';
} else {
  //用户输入验证码错误
  return '您输入验证码错误';
}

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
Feb 09 PHP
php生成随机密码的三种方法小结
Sep 04 PHP
php 操作调试的方法
Jul 12 PHP
php之XML转数组函数的详解
Jun 07 PHP
探讨GDFONTPATH能否被winxp下的php支持
Jun 21 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 PHP
php教程之魔术方法的使用示例(php魔术函数)
Feb 12 PHP
php中的观察者模式简单实例
Jan 20 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
Sep 20 PHP
PHP的时间戳与具体时间转化的简单实现
Jun 13 PHP
php array_pop 删除数组最后一个元素实例
Nov 02 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
Sep 10 #PHP
Laravel中正确地返回HTTP状态码方法示例
Sep 10 #PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
Sep 10 #PHP
mysqli扩展无法在PHP7下升级问题的解决
Sep 10 #PHP
PHP 模拟登陆功能实例详解
Sep 10 #PHP
Yii框架日志操作图文与实例详解
Sep 09 #PHP
php求斐波那契数的两种实现方式【递归与递推】
Sep 09 #PHP
You might like
用Php实现链结人气统计
2006/10/09 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
快速保存网页中所有图片的方法
2006/06/23 Javascript
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
JavaScript实现的双向跨域插件分享
2015/01/31 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
jQuery实现淡入淡出二级下拉导航菜单的方法
2015/08/28 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
python实现决策树
2017/12/21 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
Python2与Python3的区别详解
2020/02/09 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
python 装饰器的使用示例
2020/10/10 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
Python排序函数的使用方法详解
2020/12/11 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
出纳员岗位职责
2014/03/13 职场文书
志愿者活动总结范文
2014/04/26 职场文书
路政管理求职信
2014/06/18 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
驻村工作简报
2015/07/20 职场文书
2016小学新学期寄语
2015/12/04 职场文书