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 相关文章推荐
安装APACHE
Jan 15 PHP
使用PHP获取汉字的拼音(全部与首字母)
Jun 27 PHP
destoon二次开发入门示例
Jun 20 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
Nov 28 PHP
WordPress迁移时一些常见问题的解决方法整理
Nov 24 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
CI框架扩展系统核心类的方法分析
May 23 PHP
PHP对称加密函数实现数据的加密解密
Oct 27 PHP
php 变量引用与变量销毁机制详细介绍
Dec 05 PHP
PHP将字符串首字母大小写转换的实例
Jan 21 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
Jan 10 PHP
laravel添加角色和模糊搜索功能的实现代码
Jun 22 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环境搭建最新方法
2006/09/05 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
php中print(),print_r(),echo()的区别详解
2014/12/01 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
2015/08/23 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
解读IE和firefox下JScript和HREF的执行顺序
2008/01/12 Javascript
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
2013/03/19 Javascript
选择器中含有空格在使用示例及注意事项
2013/07/31 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
2014/04/08 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
JS实现n秒后自动跳转的两种方法
2020/11/30 Javascript
AngularJS控制器详解及示例代码
2016/08/16 Javascript
详解Vue组件之间的数据通信实例
2017/06/17 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
利用Python命令行传递实例化对象的方法
2016/11/02 Python
python 上下文管理器使用方法小结
2017/10/10 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
幸福家庭事迹材料
2014/02/03 职场文书
餐厅销售主管职责范本
2014/02/19 职场文书
一年级评语大全
2014/04/23 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android
使用Python开发冰球小游戏
2022/04/30 Python