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学习之PHP变量
Oct 09 PHP
Zend Studio 无法启动的问题解决方法
Dec 04 PHP
php cout&amp;lt;&amp;lt;的一点看法
Jan 24 PHP
php继承的一个应用
Sep 06 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
Mar 01 PHP
php生成静态文件的多种方法分享
Jul 17 PHP
PHP 过滤页面中的BOM(实现代码)
Jun 29 PHP
php使用exec shell命令注入的方法讲解
Nov 12 PHP
php按单词截取字符串的方法
Apr 07 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
May 09 PHP
php中namespace use用法实例分析
Jan 22 PHP
php基于数组函数实现关联表的编辑操作示例
Jul 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
php smarty函数扩展
2010/03/15 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
node.js操作mongodb学习小结
2015/04/25 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
TinyMCE汉化及本地上传图片功能实例详解
2016/05/31 Javascript
AngularJS 中的Promise --- $q服务详解
2016/09/14 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
浅谈React + Webpack 构建打包优化
2018/01/23 Javascript
微信小程序实现文字跑马灯效果
2020/05/26 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
Python中type的构造函数参数含义说明
2015/06/21 Python
Python连接DB2数据库
2016/08/27 Python
Python正则捕获操作示例
2017/08/19 Python
对Python中9种生成新对象的方法总结
2018/05/23 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
属性与 @property 方法让你的python更高效
2020/09/21 Python
BeautifulSoup中find和find_all的使用详解
2020/12/07 Python
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
十佳班主任事迹材料
2014/01/18 职场文书
师范生求职信
2014/06/14 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
出租车拒载检讨书
2015/01/28 职场文书
2016新年晚会开场白
2015/12/03 职场文书
观看安全警示教育片心得体会
2016/01/15 职场文书
python 逐步回归算法
2021/04/06 Python