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新手上路(七)
Oct 09 PHP
PHP常用代码
Nov 23 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
Oct 06 PHP
php生成图形(Libchart)实例
Nov 06 PHP
PHP小教程之实现双向链表
Jun 12 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
Nov 17 PHP
THINKPHP项目开发中的日志记录实例分析
Dec 01 PHP
php中header设置常见文件类型的content-type
Jun 23 PHP
Yii框架上传图片用法总结
Mar 28 PHP
Laravel框架实现的rbac权限管理操作示例
Jan 16 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
May 30 PHP
laravel-admin的多级联动方法
Sep 30 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中常用编辑器推荐
2007/01/02 PHP
php控制linux服务器常用功能 关机 重启 开新站点等
2012/09/05 PHP
PHPThumb图片处理实例
2014/05/03 PHP
我见过最全的个人js加解密功能页面
2007/12/12 Javascript
JS随机打乱数组的方法小结
2016/06/22 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
Nodejs 发送Post请求功能(发短信验证码例子)
2017/02/09 NodeJs
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
JavaScript如何把两个数组对象合并过程解析
2019/10/10 Javascript
微信小程序动态添加和删除组件的现实
2020/02/28 Javascript
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
使用Python开发windows GUI程序入门实例
2014/10/23 Python
Python中super关键字用法实例分析
2015/05/28 Python
Django自定义分页与bootstrap分页结合
2021/02/22 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
Python使用windows设置定时执行脚本
2020/11/12 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
升职自荐信范文
2013/10/05 职场文书
后勤岗位职责
2013/11/26 职场文书
写演讲稿要注意的六件事
2014/01/14 职场文书
物业管理专业求职信
2014/06/11 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
最美家庭活动方案
2014/08/31 职场文书
医德考评自我评价
2014/09/14 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
公共场所卫生管理制度
2015/08/05 职场文书
攻击最高的10只幽灵系神奇宝贝,坚盾剑怪排第一,第五最为可怕
2022/03/18 日漫