本文实例为大家分享了php验证码类,供大家参考,具体内容如下
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
<?php
/**
*
* @author Administrator
*
*/
class ValidateCode{
private $width ;
private $height ;
private $codeNum ;
private $img_resouce ;
private $disturbColorNum ;
private $checkCode ;
function __construct( $width =80, $height =20, $codeNum =4) {
$this ->width= $width ;
$this ->height= $height ;
$this ->codeNum= $codeNum ;
$this ->checkCode= $this ->CreateCheckCode();
$number = floor ( $width * $height /25);
if ( $number >240- $codeNum ) {
$this ->disturbColorNum=240- $codeNum ;
} else {
$this ->disturbColorNum= $number ;
}
}
public function showImage( $fontpath = '' ) {
//创建图像背景
$this ->Img_resouce();
//var_dump($img_resouce);
//设置干扰元素
$this ->setDistructcolor();
//向图像中随机画出文本
$this ->outputtext( $fontpath );
//输出图像
$this ->outputimage();
}
/**
*
*获取随机创建的验证码
*/
public function getCheckCode(){
}
private function Img_resouce(){
//创建一个真彩图像
$this ->img_resouce=imagecreatetruecolor( $this ->width, $this ->height);
//随机设置图像背景
$backcolor =imagecolorallocate( $this ->img_resouce,rand(225,255),rand(225,255),rand(225,255));
//填充颜色
imagefill( $this ->img_resouce, 0, 0, $backcolor );
//设置边框背景
$border =imagecolorallocate( $this ->img_resouce, 0,0,0);
//画一个矩形
imagerectangle( $this ->img_resouce,0,0, $this ->width-1, $this ->height-1, $border );
}
private function setDistructcolor(){
//绘画干扰点
for ( $i = 0; $i < $this ->disturbColorNum; $i ++) {
imagesetpixel( $this ->img_resouce, rand(1, $this ->width-2), rand(1, $this ->height-2), rand(0,255));
}
//绘画干扰线
for ( $j = 0; $j <3; $j ++) {
$linecolor =imagecolorallocate( $this ->img_resouce,rand(0,255),rand(0,255),rand(0,255));
imagearc( $this ->img_resouce, rand(0, $this ->width), rand(0, $this ->height),
rand(10, 225), rand(20, 150),
55, 44, $linecolor );
}
}
private function CreateCheckCode(){
$code = '23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ' ;
$string = '' ;
for ( $i = 0; $i < $this ->codeNum; $i ++) {
$char = $code {rand(0, strlen ( $code )-1)};
$string .= $char ;
}
return $string ;
}
private function outputtext( $fontpath = '' ){
for ( $i = 0; $i < $this ->codeNum; $i ++) {
$fontcolor =imagecolorallocate( $this ->img_resouce, rand(0,128), rand(0, 128), rand(0, 128));
if ( $fontpath == '' ) {
$fontsize =rand(3, 5);
$x = floor ( $this ->width/ $this ->codeNum)* $i +3;
$y =rand(0, $this ->height-20);
imagechar( $this ->img_resouce, $fontsize , $x , $y , $this ->checkCode{ $i }, $fontcolor );
} else {
$fontsize =rand(12, 16);
$x = floor (( $this ->width-8)/ $this ->codeNum)* $i +8;
$y =rand( $fontsize , $this ->height-15);
imagettftext( $this ->img_resouce, $fontsize ,rand(-45,45), $x , $y , $fontcolor ,fontpath, $this ->checkCode{ $i });
}
}
}
private function outputimage() {
if (imagetypes() & IMG_GIF) {
header( "Content-type: image/gif" );
imagegif( $this ->img_resouce);
} else if (imagetypes() & IMG_JPEG) {
header( "Content-type: image/jpeg" );
imagejpeg( $this ->img_resouce);
} else if (imagetypes() & IMG_PNG) {
header( "Content-type: image/png" );
imagepng( $this ->img_resouce);
} else {
echo "PHP不支持的类型" ;
}
}
private function __destruct(){
imagedestroy( $this ->img_resouce);
}
}
?>
|
以上就是本文的全部内容,希望对大家的学习有所帮助。