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 20 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
May 16 PHP
简单的php数据库操作类代码(增,删,改,查)
Apr 08 PHP
php导出word格式数据的代码实例
Nov 25 PHP
PHP多线程之内部多线程实例分析
Mar 09 PHP
PHP自毁程序(慎用)
Jul 09 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
Jul 15 PHP
Yii2框架实现注册和登录教程
Sep 30 PHP
PHP房贷计算器实例代码,等额本息,等额本金
Apr 01 PHP
PHP实现Unicode编码相互转换的方法示例
Nov 17 PHP
详解json在php中的应用
Sep 30 PHP
php反射学习之不用new方法实例化类操作示例
Jun 14 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读取文件内容后清空文件示例代码
2014/03/18 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
[原创]后缀就扩展名为js的文件是什么文件
2007/12/06 Javascript
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
jQuery Validation Plugin验证插件手动验证
2016/01/26 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
Nodejs核心模块之net和http的使用详解
2019/04/02 NodeJs
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
JavaScript原型式继承实现方法
2019/11/06 Javascript
js实现双色球效果
2020/08/02 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
[07:54]DOTA2 MV《我的动力鞋》 ImbaTV 出品
2014/11/21 DOTA
实例讲解Python中的私有属性
2014/08/21 Python
python 创建一维的0向量实例
2019/12/02 Python
keras 多gpu并行运行案例
2020/06/10 Python
keras输出预测值和真实值方式
2020/06/27 Python
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
违反课堂纪律检讨书
2014/01/19 职场文书
岗位竞聘书范文
2014/03/31 职场文书
团队精神口号
2014/06/06 职场文书
单位工作证明格式模板
2014/10/04 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
党章学习心得体会2016
2016/01/14 职场文书
《自己去吧》教学反思
2016/02/16 职场文书