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中iconv函数使用方法
May 24 PHP
PHP伪静态页面函数附使用方法
Jun 20 PHP
php 对输入信息的进行安全过滤的函数代码
Jun 29 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
Oct 04 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
Jun 09 PHP
ThinkPHP3.1基础知识快速入门
Jun 19 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
Sep 10 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 PHP
php封装的表单验证类完整实例
Oct 19 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
Dec 14 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
Apr 20 PHP
thinkPHP和onethink微信支付插件分享
Aug 11 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原创论坛
2006/10/09 PHP
jQuery 源码分析笔记
2011/05/25 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
2019/07/01 PHP
图片完美缩放
2006/09/07 Javascript
利用XMLHTTP传递参数在另一页面执行并刷新本页
2006/10/26 Javascript
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
2012/03/01 Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
2012/08/24 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
jfinal与bootstrap的登录跳转实战演习
2015/09/22 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
微信小程序 可搜索的地址选择实现详解
2019/08/28 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
让Python代码更快运行的5种方法
2015/06/21 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
详解python中sort排序使用
2019/03/23 Python
django写用户登录判定并跳转制定页面的实例
2019/08/21 Python
Python实现快速排序的方法详解
2019/10/25 Python
Django choices下拉列表绑定实例
2020/03/13 Python
Python不支持 i ++ 语法的原因解析
2020/07/22 Python
Python类型转换的魔术方法详解
2020/12/23 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
阳光体育活动总结
2014/04/30 职场文书
彩妆大赛策划方案
2014/05/13 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
工作一年自我鉴定
2019/06/20 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server