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 修改zen-cart下单和付款流程以防止漏单
Mar 08 PHP
PHP抽象类 介绍
Jun 13 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
Jun 20 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
Nov 07 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
Oct 24 PHP
dedecms中使用php语句指南
Nov 13 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
Symfony2框架学习笔记之表单用法详解
Mar 18 PHP
CI框架扩展系统核心类的方法分析
May 23 PHP
对PHP依赖注入的理解实例分析
Oct 09 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP中strval()函数实例用法
Jun 07 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
解决控件遮挡问题:关于有窗口元素和无窗口元素
2007/01/28 PHP
php线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
简单PHP会话(session)说明介绍
2016/08/21 PHP
给大家分享几个常用的PHP函数
2017/01/15 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
php实现文章评论系统
2019/02/18 PHP
PHP date_default_timezone_set()设置时区操作实例分析
2020/05/16 PHP
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
js动态为代码着色显示行号
2013/05/29 Javascript
Javascript selection的兼容性写法介绍
2013/12/20 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
NodeJS使用七牛云存储上传文件的方法
2017/07/24 NodeJs
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
JavaScript实现的级联算法示例【省市二级联动功能】
2018/12/25 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
在python中pandas的series合并方法
2018/11/12 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
介绍一下游标
2012/01/10 面试题
人力资源部门的主要职能
2014/02/22 职场文书
学习焦裕禄同志为人民服务思想汇报
2014/09/10 职场文书
团队会宣传标语
2014/10/09 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
2015年采购工作总结
2015/04/10 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
python学习之panda数据分析核心支持库
2021/05/07 Python