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中接口与抽象类的区别
Jun 08 PHP
php常用Output和ptions/Info函数集介绍
Jun 19 PHP
基于php中使用excel的简单介绍
Aug 02 PHP
php导出word格式数据的代码实例
Nov 25 PHP
php 过滤英文标点符号及过滤中文标点符号代码
Jun 12 PHP
JavaScript创建命名空间的5种写法
Jun 24 PHP
thinkPHP实现表单自动验证
Dec 24 PHP
php正则修正符用法实例详解
Dec 29 PHP
yii2简单使用less代替css示例
Mar 10 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 PHP
PHP常用字符串函数用法实例总结
Jun 04 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
Jul 24 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
星际争霸任务指南——人族
2020/03/04 星际争霸
根德YB400的电路分析
2021/03/02 无线电
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
初品cakephp 入门基础
2012/02/16 PHP
PHP中使用Imagick实现各种图片效果实例
2015/01/21 PHP
php中动态变量用法实例
2015/06/10 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
通过隐藏option实现select的联动效果
2009/11/10 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
JS出现失效的情况总结
2017/01/20 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
原生js实现放大镜特效
2017/03/08 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
python实现查询IP地址所在地
2015/03/29 Python
Python基于动态规划算法计算单词距离
2015/07/25 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
python中pivot()函数基础知识点
2021/01/03 Python
夏威夷航空官网:Hawaiian Airlines
2016/09/11 全球购物
购买美国制造的相框和画框架:Picture Frames
2018/08/14 全球购物
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
Why we need EJB
2016/10/20 面试题
银行会计财务工作个人的自我评价
2013/10/29 职场文书
个人简历自我评价范文
2014/02/04 职场文书
益达广告词
2014/03/14 职场文书
2014年师德承诺书
2014/05/23 职场文书
地球一小时宣传标语
2014/06/24 职场文书
2014法制宣传日活动总结
2014/07/09 职场文书
毕业设计论文致谢词
2015/05/14 职场文书
vue-router中hash模式与history模式的区别
2021/06/23 Vue.js
Java常用函数式接口总结
2021/06/29 Java/Android
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技