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 相关文章推荐
wordpress之wp-settings.php
Aug 17 PHP
PHP 数组排序方法总结 推荐收藏
Jun 30 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 PHP
laravel 5 实现模板主题功能(续)
Mar 02 PHP
php实现比较两个字符串日期大小的方法
May 12 PHP
php实现Session存储到Redis
Nov 11 PHP
微信支付PHP SDK之微信公众号支付代码详解
Dec 09 PHP
CI框架的安全性分析
May 18 PHP
Zend Framework动作控制器用法示例
Dec 09 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
Jul 04 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 PHP
yii2 url重写并隐藏index.php方法
Dec 10 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
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
实现PHP搜索加分页
2016/10/12 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
PHP registerXPathNamespace()函数讲解
2019/02/03 PHP
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
js操作select控件的几种方法
2010/06/02 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
jquery链式操作的正确使用方法
2014/01/06 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
2014/11/08 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
微信小程序图片选择区域裁剪实现方法
2017/12/02 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
微信小程序实现图片压缩
2019/12/03 Javascript
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
python使用wxpython开发简单记事本的方法
2015/05/20 Python
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
pycharm远程调试openstack的图文教程
2017/11/21 Python
PyTorch中permute的用法详解
2019/12/30 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
La Senza官网:北美顶尖性感内衣品牌
2018/08/03 全球购物
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
文明家庭先进事迹材
2014/01/27 职场文书
消防安全承诺书
2014/05/22 职场文书
高中教师个人工作总结
2015/02/10 职场文书
证婚人致辞精选
2015/07/28 职场文书
决心书格式及范文
2019/06/24 职场文书
python 如何执行控制台命令与操作剪切板
2021/05/20 Python
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python