Laravel下生成验证码的类


Posted in PHP onNovember 15, 2017

本文实例为大家分享了Laravel生成验证码的类,供大家参考,具体内容如下

<?php
 
namespace App\Tool\Validate;
 
//验证码类
class ValidateCode {
  private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子
  private $code;//验证码
  private $codelen = 4;//验证码长度
  private $width = 130;//宽度
  private $height = 50;//高度
  private $img;//图形资源句柄
  private $font;//指定的字体
  private $fontsize = 20;//指定字体大小
  private $fontcolor;//指定字体颜色
 
  //构造方法初始化
  public function __construct()
  {
    $this->font = public_path() . '/fonts/Elephant.ttf';//注意字体路径要写对,否则显示不了图片
    $this->createCode();
  }
  //生成随机码
  private function createCode()
  {
    $_len = strlen($this->charset) - 1;
    for ($i = 0;$i < $this->codelen;++$i) {
      $this->code .= $this->charset[mt_rand(0, $_len)];
    }
  }
  //生成背景
  private function createBg()
  {
    $this->img = imagecreatetruecolor($this->width, $this->height);
    $color = imagecolorallocate($this->img, mt_rand(157, 255), mt_rand(157, 255), mt_rand(157, 255));
    imagefilledrectangle($this->img, 0, $this->height, $this->width, 0, $color);
  }
  //生成文字
  private function createFont()
  {
    $_x = $this->width / $this->codelen;
    for ($i = 0;$i < $this->codelen;++$i) {
      $this->fontcolor = imagecolorallocate($this->img, mt_rand(0, 156), mt_rand(0, 156), mt_rand(0, 156));
      imagettftext($this->img, $this->fontsize, mt_rand(-30, 30), $_x * $i + mt_rand(1, 5), $this->height / 1.4, $this->fontcolor, $this->font, $this->code[$i]);
    }
  }
  //生成线条、雪花
  private function createLine()
  {
    //线条
    for ($i = 0;$i < 6;++$i) {
      $color = imagecolorallocate($this->img, mt_rand(0, 156), mt_rand(0, 156), mt_rand(0, 156));
      imageline($this->img, mt_rand(0, $this->width), mt_rand(0, $this->height), mt_rand(0, $this->width), mt_rand(0, $this->height), $color);
    }
    //雪花
    for ($i = 0;$i < 100;++$i) {
      $color = imagecolorallocate($this->img, mt_rand(200, 255), mt_rand(200, 255), mt_rand(200, 255));
      imagestring($this->img, mt_rand(1, 5), mt_rand(0, $this->width), mt_rand(0, $this->height), '*', $color);
    }
  }
  //输出
  private function outPut()
  {
    header('Content-type:image/png');
    imagepng($this->img);
    imagedestroy($this->img);
  }
  //对外生成
  public function doimg()
  {
    $this->createBg();
    $this->createLine();
    $this->createFont();
    $this->outPut();
  }
  //获取验证码
  public function getCode()
  {
    return strtolower($this->code);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP中动态显示签名和ip原理
Mar 28 PHP
PHP扩展编写点滴 技巧收集
Mar 09 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 PHP
php 中文字符串首字母的获取函数分享
Nov 04 PHP
php表单请求获得数据求和示例
May 15 PHP
浅析php中json_encode()和json_decode()
May 25 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
Mar 22 PHP
PHP使用Redis替代文件存储Session的方法
Feb 15 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
Jul 31 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 21 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
May 06 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 #PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 #PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 #PHP
PHP中递归的实现实例详解
Nov 14 #PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 #PHP
PHP对称加密算法(DES/AES)类的实现代码
Nov 14 #PHP
浅谈PHP中如何实现Hook机制
Nov 14 #PHP
You might like
PHP MVC模式在网站架构中的实现分析
2010/03/04 PHP
php下使用iconv需要注意的问题
2010/11/20 PHP
php 文件缓存函数
2011/10/08 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
2016/01/08 PHP
PHP中仿制 ecshop验证码实例
2017/01/06 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
jquery实现的一个简单进度条效果实例
2014/05/12 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
2016/03/30 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
2016/07/27 Javascript
ES6入门教程之Iterator与for...of循环详解
2017/05/17 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
vue.js加载新的内容(实例代码)
2017/06/01 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
JavaScript模板引擎实现原理实例详解
2018/12/14 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
[02:44]2014DOTA2 国际邀请赛中国区预选赛 大神红毯秀
2014/05/25 DOTA
详解Python编程中包的概念与管理
2015/10/16 Python
详解Python中open()函数指定文件打开方式的用法
2016/06/04 Python
Python3之文件读写操作的实例讲解
2018/01/23 Python
Python入门必须知道的11个知识点
2018/03/21 Python
python判断输入日期为第几天的实例
2018/11/13 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
《蓝色的树叶》教学反思
2014/02/24 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
MySQL 如何限制一张表的记录数
2021/09/14 MySQL