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数组函数序列之array_splice() - 在数组任意位置插入元素
Nov 07 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
Jun 21 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
Oct 17 PHP
ThinkPHP路由详解
Jul 27 PHP
php实现的单一入口应用程序实例分析
Sep 23 PHP
PHP中JSON的应用技巧
Oct 10 PHP
WordPress中设置Post Type自定义文章类型的实例教程
May 10 PHP
静态html文件执行php语句的方法(推荐)
Nov 21 PHP
详解php curl带有csrf-token验证模拟提交方法
Apr 18 PHP
PHP使用OB缓存实现静态化功能示例
Mar 23 PHP
PHP7匿名类的用法示例
Apr 05 PHP
在Laravel 的 Blade 模版中实现定义变量
Oct 14 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查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
php将数组存储为文本文件方法汇总
2015/10/28 PHP
PHP实现的DES加密解密实例代码
2016/04/06 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
JQuery toggle使用分析
2009/11/16 Javascript
子窗口、父窗口和Silverlight之间的相互调用
2010/08/16 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
原生JS实现跑马灯效果
2017/02/20 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
js实现简单模态框实例
2018/11/16 Javascript
微信小程序实现卡片左右滑动效果的示例代码
2019/05/01 Javascript
Node.js 实现抢票小工具 &amp; 短信通知提醒功能
2019/10/22 Javascript
Vue记住滚动条和实现下拉加载的完美方法
2020/07/31 Javascript
vue3.0+vue-router+element-plus初实践
2020/12/02 Vue.js
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
意大利领先的奢侈品在线时装零售商:MCLABELS
2020/10/13 全球购物
师范学院毕业生求职信范文
2013/12/26 职场文书
演讲稿怎么写
2014/01/07 职场文书
小学三年级数学教学反思
2014/01/31 职场文书
村干部培训班主持词
2014/03/28 职场文书
力学专业求职信
2014/07/23 职场文书
2014年保险业务员工作总结
2014/12/23 职场文书
常用的Python代码调试工具总结
2021/06/23 Python
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL
Java 在线考试云平台的实现
2021/11/23 Java/Android
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server