本文实例为大家分享了Laravel生成验证码的类,供大家参考,具体内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
<?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); } } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/sunshenggang/p/7772307.html