本文实例为大家分享了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