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 5.0对象模型深度探索之绑定
Sep 05 PHP
PHP模板引擎SMARTY
Oct 09 PHP
PHP学习之PHP表达式
Oct 09 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
Sep 07 PHP
PHP中的多行字符串传递给JavaScript的两种方法
Jun 19 PHP
php的GD库imagettftext函数解决中文乱码问题
Jan 24 PHP
php查看当前Session的ID实例
Mar 16 PHP
PHP针对字符串开头和结尾的判断方法
Jul 11 PHP
thinkPHP线上自动加载异常与修复方法实例分析
Dec 01 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 PHP
浅谈PHP中的Trait使用方法
Mar 22 PHP
PHP 实现 JSON 数据的编码和解码操作详解
Apr 22 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下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
PHP实现连接设备、通讯和发送命令的方法
2015/10/13 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
JavaScript 高级语法介绍
2009/06/15 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
javascript闭包入门示例
2014/04/30 Javascript
jquery用data方法获取某个元素上的事件
2014/06/23 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
jquery原理以及学习技巧介绍
2015/11/11 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
详解Vue2.5+迁移至Typescript指南
2019/08/01 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
Python的Flask框架的简介和安装方法
2015/11/13 Python
python入门基础之用户输入与模块初认识
2016/11/14 Python
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
jupyter实现重新加载模块
2020/04/16 Python
Python新手如何进行闭包时绑定变量操作
2020/05/29 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
Html5写一个简单的俄罗斯方块小游戏
2019/12/03 HTML / CSS
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
硕士生找工作求职信
2014/07/05 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书