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 04 PHP
使用php shell命令合并图片的代码
Jun 23 PHP
php代码运行时间查看类代码分享
Aug 06 PHP
PHP的5个安全措施小结
Jul 17 PHP
无需重新编译php加入ftp扩展的解决方法
Feb 07 PHP
基于Zend的Config机制的应用分析
May 02 PHP
解析PHP中intval()等int转换时的意外异常情况
Jun 21 PHP
php实现的返回数据格式化类实例
Sep 22 PHP
php数据访问之增删改查操作
May 09 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
Nov 22 PHP
详解laravel安装使用Passport(Api认证)
Jul 27 PHP
实现laravel 插入操作日志到数据库的方法
Oct 11 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下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
php小偷相关截取函数备忘
2010/11/28 PHP
php 静态属性和静态方法区别详解
2017/04/09 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
js优化针对IE6.0起作用(详细整理)
2012/12/25 Javascript
javascript学习笔记--数字格式类型
2014/05/22 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
js+HTML5实现视频截图的方法
2015/06/16 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
Node.js中npm常用命令大全
2016/06/09 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
2017/09/30 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
JS实现可视化音频效果的实例代码
2020/01/16 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
Python中的类学习笔记
2014/09/23 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
使用spring mvc+localResizeIMG实现HTML5端图片压缩上传的功能
2016/12/16 HTML / CSS
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
什么是"引用"?申明和使用"引用"要注意哪些问题?
2016/03/03 面试题
办公室驾驶员岗位职责
2013/11/15 职场文书
优秀学生干部推荐材料
2014/02/03 职场文书
绩效工资实施方案
2014/03/15 职场文书
机关党建工作汇报材料
2014/08/20 职场文书