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 相关文章推荐
BBS(php &amp; mysql)完整版(四)
Oct 09 PHP
PHP 采集程序原理分析篇
Mar 05 PHP
PHP学习散记_编码(json_encode 中文不显示)
Nov 10 PHP
php排序算法(冒泡排序,快速排序)
Oct 09 PHP
解析php框架codeigniter中如何使用框架的session
Jun 24 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
Jun 24 PHP
神盾加密解密教程(一)PHP变量可用字符
May 28 PHP
Yii入门教程之目录结构、入口文件及路由设置
Nov 25 PHP
用PHP代码在网页上生成图片
Jul 01 PHP
symfony2.4的twig中date用法分析
Mar 18 PHP
java解析json方法总结
May 16 PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 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
B2K与车机的中波PK
2021/03/02 无线电
php 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
PHP字符串长度计算 - strlen()函数使用介绍
2013/10/15 PHP
试用php中oci8扩展
2015/06/18 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
Javascript 构造函数,公有,私有特权和静态成员定义方法
2009/11/30 Javascript
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
JavaScript实现自动切换图片代码
2016/10/11 Javascript
javascript实现数据双向绑定的三种方式小结
2017/03/09 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
2018/01/08 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
JS array数组检测方式解析
2020/05/19 Javascript
如何使用 vue-cli 创建模板项目
2020/11/19 Vue.js
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
解决安装pycharm后不能执行python脚本的问题
2019/01/19 Python
python开发准备工作之配置虚拟环境(非常重要)
2019/02/11 Python
详解Python中的测试工具
2019/06/09 Python
python文档字符串(函数使用说明)使用详解
2019/07/30 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
pytest中文文档之编写断言
2019/09/12 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
自荐信的五个重要部分
2013/10/29 职场文书
代收款委托书范本
2014/10/01 职场文书
党的群众路线调研报告
2014/11/03 职场文书
2015年师德师风承诺书
2015/01/22 职场文书
会议欢迎词范文
2015/01/27 职场文书
财政局个人年终总结
2015/03/03 职场文书
成绩单家长意见
2015/06/03 职场文书
react合成事件与原生事件的相关理解
2021/05/13 Javascript