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 $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
Jun 21 PHP
批量获取memcache值并按key的顺序返回的实现代码
Jun 14 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
PHP中使用memcache存储session的三种配置方法
Apr 05 PHP
在PHP程序中使用Rust扩展的方法
Jul 03 PHP
启用Csrf后POST数据时出现的400错误
Jul 05 PHP
php实现通过soap调用.Net的WebService asmx文件
Feb 27 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
Jul 13 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
PHP集成环境XAMPP的安装与配置
Nov 13 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
Oct 09 PHP
基于php+MySql实现学生信息管理系统实例
Aug 04 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
phpmyadmin MySQL 加密配置方法
2009/07/05 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
让图片旋转任意角度及JQuery插件使用介绍
2013/03/20 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
Jquery 整理元素选取、常用方法一览表
2016/11/26 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
跟老齐学Python之编写类之三子类
2014/10/11 Python
Python实现文件按照日期命名的方法
2015/07/09 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
Python 移动光标位置的方法
2019/01/20 Python
pyQt5实时刷新界面的示例
2019/06/25 Python
Python 类的私有属性和私有方法实例分析
2019/09/29 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
python和js交互调用的方法
2020/06/23 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
2020/07/21 Python
python实现移动木板小游戏
2020/10/09 Python
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
写好求职信第一句话的技巧
2013/10/26 职场文书
户籍证明的格式
2014/01/13 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
运动员入场前导词
2015/07/20 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
Nginx下配置Https证书详细过程
2021/04/01 Servers