当前位置:首页 > CMS教程 > 其它CMS > 列表

Laravel下生成验证码的类

发布:smiling 来源: PHP粉丝网  添加日期:2021-08-19 17:20:40 浏览: 评论:0 

这篇文章主要为大家详细介绍了Laravel下生成验证码的类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,本文实例为大家分享了Laravel生成验证码的类,供大家参考,具体内容如下:

  1. <?php 
  2.    
  3. namespace App\Tool\Validate; 
  4.    
  5. //验证码类 
  6. class ValidateCode { 
  7.   private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子 
  8.   private $code;//验证码 
  9.   private $codelen = 4;//验证码长度 
  10.   private $width = 130;//宽度 
  11.   private $height = 50;//高度 
  12.   private $img;//图形资源句柄 
  13.   private $font;//指定的字体 
  14.   private $fontsize = 20;//指定字体大小 
  15.   private $fontcolor;//指定字体颜色 
  16.    
  17.   //构造方法初始化 
  18.   public function __construct() 
  19.   { 
  20.     $this->font = public_path() . '/fonts/Elephant.ttf';//注意字体路径要写对,否则显示不了图片 
  21.     $this->createCode(); 
  22.   } 
  23.   //生成随机码 
  24.   private function createCode() 
  25.   { 
  26.     $_len = strlen($this->charset) - 1; 
  27.     for ($i = 0;$i < $this->codelen;++$i) { 
  28.       $this->code .= $this->charset[mt_rand(0, $_len)]; 
  29.     } 
  30.   } 
  31.   //生成背景 
  32.   private function createBg() 
  33.   { 
  34.     $this->img = imagecreatetruecolor($this->width, $this->height); 
  35.     $color = imagecolorallocate($this->img, mt_rand(157, 255), mt_rand(157, 255), mt_rand(157, 255)); 
  36.     imagefilledrectangle($this->img, 0, $this->height, $this->width, 0, $color); 
  37.   } 
  38.   //生成文字 
  39.   private function createFont() 
  40.   { 
  41.     $_x = $this->width / $this->codelen; 
  42.     for ($i = 0;$i < $this->codelen;++$i) { 
  43.       $this->fontcolor = imagecolorallocate($this->img, mt_rand(0, 156), mt_rand(0, 156), mt_rand(0, 156)); 
  44.       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]); 
  45.     } 
  46.   } 
  47.   //生成线条、雪花 
  48.   private function createLine() 
  49.   { 
  50.     //线条 
  51.     for ($i = 0;$i < 6;++$i) { 
  52.       $color = imagecolorallocate($this->img, mt_rand(0, 156), mt_rand(0, 156), mt_rand(0, 156)); 
  53.       imageline($this->img, mt_rand(0, $this->width), mt_rand(0, $this->height), mt_rand(0, $this->width), mt_rand(0, $this->height), $color); 
  54.     } 
  55.     //雪花 
  56.     for ($i = 0;$i < 100;++$i) { 
  57.       $color = imagecolorallocate($this->img, mt_rand(200, 255), mt_rand(200, 255), mt_rand(200, 255)); 
  58.       imagestring($this->img, mt_rand(1, 5), mt_rand(0, $this->width), mt_rand(0, $this->height), '*'$color); 
  59.     } 
  60.   } 
  61.   //输出 
  62.   private function outPut() 
  63.   { 
  64.     header('Content-type:image/png'); 
  65.     imagepng($this->img); 
  66.     imagedestroy($this->img); 
  67.   } 
  68.   //对外生成 
  69.   public function doimg() 
  70.   { 
  71.     $this->createBg(); 
  72.     $this->createLine(); 
  73.     $this->createFont(); 
  74.     $this->outPut(); 
  75.   } 
  76.   //获取验证码 
  77.   public function getCode() 
  78.   { 
  79.     return strtolower($this->code); 
  80.   } 
  81. }

Tags: Laravel生成验证码

分享到: