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 Cookie的一个使用注意点
Nov 08 PHP
PHP跨时区(UTC时间)应用解决方案
Jan 11 PHP
基于initPHP的框架介绍
Apr 18 PHP
解析PHP生成静态html文件的三种方法
Jun 18 PHP
PHP CURL获取cookies模拟登录的方法
Nov 04 PHP
Laravel实现用户注册和登录
Jan 23 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PHP 爬取网页的主要方法
Jul 13 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
Jun 12 PHP
用php定义一个数组最简单的方法
Oct 04 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 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下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
PHP 导出数据到淘宝助手CSV的方法分享
2010/02/27 PHP
PHP反向代理类代码
2014/08/15 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
基于Jquery的简单图片切换效果
2011/01/06 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
2016/05/27 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
基于JS+Canves实现点击按钮水波纹效果
2016/09/15 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
[02:23]DOTA2英雄基础教程 幻影长矛手
2013/12/09 DOTA
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
python+pyqt5实现24点小游戏
2019/01/24 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
Flask框架工厂函数用法实例分析
2019/05/25 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
解决Django中checkbox复选框的传值问题
2020/03/31 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
生产部岗位职责范文
2014/02/07 职场文书
《假如》教学反思
2014/04/17 职场文书
服务之星事迹材料
2014/05/03 职场文书
《称赞》教学反思
2016/02/17 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server
Nginx HTTP跳转至HTTPS
2022/05/15 Servers