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缩略图生成程式(需要GD库支持)
Mar 06 PHP
openflashchart 2.0 简单案例php版
May 21 PHP
php的SimpleXML方法读写XML接口文件实例解析
Jun 16 PHP
分享最受欢迎的5款PHP框架
Nov 27 PHP
PHP多文件上传类实例
Mar 07 PHP
PHP添加图片水印、压缩、剪切的封装类
Aug 17 PHP
PHP函数import_request_variables()用法分析
Apr 02 PHP
PHP实现转盘抽奖算法分享
Apr 15 PHP
docker-compose部署php项目实例详解
Jul 30 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
Sep 26 PHP
laravel orm 关联条件查询代码
Oct 21 PHP
浅谈PHP7中的一些小技巧
May 29 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 callback函数使用方法和注意事项
2015/01/23 PHP
php删除数组指定元素实现代码
2017/05/03 PHP
php分页查询mysql结果的base64处理方法示例
2017/05/18 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
jquery 插件开发方法小结
2009/10/23 Javascript
JS删除数组元素的函数介绍
2013/03/27 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
Vue中多元素过渡特效的解决方案
2020/02/05 Javascript
[00:37]DOTA2上海特级锦标赛 OG战队宣传片
2016/03/03 DOTA
Python Tkinter GUI编程入门介绍
2015/03/10 Python
python实现通过代理服务器访问远程url的方法
2015/04/29 Python
django开发之settings.py中变量的全局引用详解
2017/03/29 Python
Python函数参数操作详解
2018/08/03 Python
python自动化测试之DDT数据驱动的实现代码
2019/07/23 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
django删除表重建的实现方法
2019/08/28 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
python如何控制进程或者线程的个数
2020/10/16 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
canvas之万花筒效果的简单实现(推荐)
2016/08/16 HTML / CSS
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
《三顾茅庐》教学反思
2014/04/10 职场文书
综艺节目策划方案
2014/06/13 职场文书
教室布置标语
2014/06/26 职场文书
献爱心大型公益活动策划方案
2014/09/15 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
理想国读书笔记
2015/06/25 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS
zabbix监控mysql的实例方法
2021/06/02 MySQL
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android
MySQL数据库表约束讲解
2022/06/21 MySQL