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数组实现无限分类,不使用数据库,不使用递归.
Dec 09 PHP
php 什么是PEAR?(第三篇)
Mar 19 PHP
ajax实现无刷新分页(php)
Jul 18 PHP
ThinkPHP分页实例
Oct 15 PHP
php文件夹的创建与删除方法
Jan 24 PHP
php文件读取方法实例分析
Jun 20 PHP
学习php设计模式 php实现门面模式(Facade)
Dec 07 PHP
PHP记录页面停留时间的方法
Mar 30 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP双向链表定义与用法示例
Jan 31 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 PHP
php中try catch捕获异常实例详解
Aug 06 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 curl 伪造IP来源的实例代码
2012/11/01 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
php过滤HTML标签、属性等正则表达式汇总
2014/09/22 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
无循环 JavaScript(map、reduce、filter和find)
2017/04/08 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
vue el-table实现自定义表头
2019/12/11 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
itchat接口使用示例
2017/10/23 Python
python实现教务管理系统
2018/03/12 Python
python selenium 获取标签的属性值、内容、状态方法
2018/06/22 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
pyqt5实现登录界面的模板
2020/05/30 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
详解Pandas 处理缺失值指令大全
2020/07/30 Python
Python实现像awk一样分割字符串
2020/09/15 Python
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
Topshop美国官网:英国快速时尚品牌
2019/05/16 全球购物
数控技术专业毕业自荐书范文
2014/02/05 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
本科生就业推荐信
2014/05/19 职场文书
师范大学生求职信
2014/06/13 职场文书
违反交通法规检讨书
2014/09/10 职场文书
培训心得体会怎么写
2016/01/25 职场文书
信息技术课教学反思
2016/02/23 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书
php微信小程序解包过程实例详解
2021/03/31 PHP
Java网络编程之UDP实现原理解析
2021/09/04 Java/Android
Vue的生命周期一起来看看
2022/02/24 Vue.js