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 20 PHP
php中将字符串转为HTML的实体引用的一个类
Feb 03 PHP
解析htaccess伪静态的规则
Jun 18 PHP
解析zend Framework如何自动加载类
Jun 28 PHP
PHP+MYSQL会员系统的开发实例教程
Aug 23 PHP
完美实现wordpress禁止文章修订和自动保存的方法
Nov 03 PHP
php判断并删除空目录及空子目录的方法
Feb 11 PHP
微信公众平台DEMO(PHP)
May 04 PHP
php 实现一个字符串加密解密的函数实例代码
Nov 01 PHP
PHP编程中的Session阻塞问题与解决方法分析
Aug 07 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
Apr 17 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 SQL防注入代码集合
2008/04/25 PHP
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
详解PHP中的8个魔术常量
2020/07/06 PHP
用JTrackBar实现的模拟苹果风格的滚动条
2007/08/06 Javascript
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
Angularjs使用过滤器完成排序功能
2017/09/20 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
vue轻量级框架无法获取到vue对象解决方法
2019/05/12 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
Python实现的弹球小游戏示例
2017/08/01 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
python 除法保留两位小数点的方法
2018/07/16 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
Python跳出多重循环的方法示例
2019/07/03 Python
解决python有时候import不了当前的包问题
2019/08/28 Python
Python celery原理及运行流程解析
2020/06/13 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
Python通过len函数返回对象长度
2020/10/22 Python
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
Waterford美国官网:爱尔兰水晶制品品牌
2017/04/26 全球购物
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
关于递归的一道.NET面试题
2013/05/12 面试题
新闻学专业个人求职信写作
2014/02/04 职场文书
顶撞老师检讨书
2014/02/07 职场文书
霸王洗发水广告词
2014/03/14 职场文书
护士先进个人总结
2015/02/13 职场文书
运动会开幕式主持词
2015/07/01 职场文书