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导出MySQL数据到Excel文件(fputcsv)
Jul 03 PHP
php中的PHP_EOL换行符详细解析
Oct 26 PHP
PHP中鲜为人知的10个函数
Feb 28 PHP
PHP判断指定时间段的2个方法
Mar 14 PHP
CodeIgniter删除和设置Cookie的方法
Apr 07 PHP
详解php中反射的应用
Mar 15 PHP
PHP类和对象相关系统函数与运算符小结
Sep 28 PHP
Laravel中服务提供者和门面模式的入门介绍
Nov 06 PHP
PHP中数组转换为SimpleXML教程
Jan 27 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
Apr 23 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
Jul 03 PHP
Laravel统计一段时间间隔的数据方法
Oct 09 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和XSS跨站攻击的防范
2007/04/17 PHP
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
PHP向socket服务器收发数据的方法
2015/01/24 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
2016/10/08 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
javascript发送短信验证码实现代码
2015/11/12 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
轮播的简单实现方法
2016/07/28 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
实例解析Python中的__new__特殊方法
2016/06/02 Python
Python分治法定义与应用实例详解
2017/07/28 Python
pandas数据预处理之dataframe的groupby操作方法
2018/04/13 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
python的继承知识点总结
2018/12/10 Python
python中下标和切片的使用方法解析
2019/08/27 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
python实现批量转换图片为黑白
2020/06/16 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
css3实例教程 一款纯css3实现的发光屏幕旋转特效
2014/12/07 HTML / CSS
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
英国外籍人士的在线超市:British Corner Shop
2019/06/03 全球购物
英国莱斯特松木橡木家具网上商店:Choice Furniture Superstore
2019/07/05 全球购物
施工资料员的岗位职责
2013/12/22 职场文书
学生打架检讨书
2014/10/20 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
Java spring定时任务详解
2021/10/05 Java/Android