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的网址
Nov 25 PHP
PHP Smarty生成EXCEL文档的代码
Aug 23 PHP
Look And Say 序列php实现代码
May 22 PHP
php 文本文件的读取效率
Feb 10 PHP
使用dump函数,给php加断点测试
Jun 25 PHP
ThinkPHP CURD方法之page方法详解
Jun 18 PHP
php传值赋值和传地址赋值用法实例分析
Jun 20 PHP
详解php设置session(过期、失效、有效期)
Nov 12 PHP
AJAX的使用方法详解
Apr 29 PHP
PHP实现生成推广海报的方法详解
Mar 14 PHP
laravel orm 关联条件查询代码
Oct 21 PHP
php实现微信和支付宝支付的示例代码
Aug 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
dedecms模版制作使用方法
2007/04/03 PHP
一个图片地址分解程序(用于PHP小偷程序)
2014/08/23 PHP
php绘图之在图片上写中文和英文的方法
2015/01/24 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
Jquery插件之多图片异步上传
2010/10/20 Javascript
javascript中window.event事件用法详解
2012/12/11 Javascript
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
jquery eval解析JSON中的注意点介绍
2013/08/23 Javascript
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
使用element-ui table expand展开行实现手风琴效果
2019/03/15 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
[02:39]DOTA2英雄基础教程 极限穿梭编织者
2013/12/05 DOTA
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
Python机器学习logistic回归代码解析
2018/01/17 Python
对python 生成拼接xml报文的示例详解
2018/12/28 Python
python图像处理入门(一)
2019/04/04 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
css3中检验表单的required,focus,valid和invalid样式
2014/02/21 HTML / CSS
html5组织文档结构_动力节点Java学院整理
2017/07/11 HTML / CSS
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
工程师自我评价怎么写
2013/09/19 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
小学校长个人总结
2015/03/03 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL
JAVA API 实用类 String详解
2021/10/05 Java/Android
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js