本文实例为大家分享了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
|
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
Class Image{
private $img ;
public $width = 85;
public $height = 25;
public $code ;
public $code_len = 4;
public $code_str = "329832983DSDSKDSLKQWEWQ2lkfDSFSDjfdsfdsjwlkfj93290KFDSKJFDSOIDSLK" ;
public $bg_color = '#DCDCDC' ;
public $font_size = 16;
public $font = 'font.ttf' ;
public $font_color = '#000000' ;
//创建验证码饿字符创
public function create_code(){
$code = '' ;
for ( $i =0; $i < $this ->code_len; $i ++ ){
$code .= $this ->code_str[mt_rand(0, strlen ( $this ->code_str)-1)];
}
return $this ->code = $code ;
}
//输出图像
public function getImage(){
$w = $this ->width;
$h = $this ->height;
$bg_color = $this ->bg_color;
$img = imagecreatetruecolor( $w , $h );
$bg_color = imagecolorallocate( $img ,
hexdec( substr ( $bg_color , 1,2)), hexdec( substr ( $bg_color , 3,2)), hexdec( substr ( $bg_color , 5,2)));
imagefill( $img , 0, 0, $bg_color );
$this ->img = $img ;
$this ->create_font();
$this ->create_pix();
$this ->show_code();
}
//写入验证码
public function create_font(){
$this ->create_code();
$color = $this ->font_color;
$font_color = imagecolorallocate( $this ->img, hexdec( substr ( $color ,1,2)), hexdec( substr ( $color , 3,2)), hexdec( substr ( $color ,5,2)));
$x = $this ->width/ $this ->code_len;
for ( $i =0; $i < $this ->code_len; $i ++ ){
$txt_color = imagecolorallocate( $this ->img, mt_rand(0,100), mt_rand(0, 150), mt_rand(0, 200));
imagettftext( $this ->img, $this ->font_size, mt_rand(-30, 30), $x * $i +mt_rand(3, 6), mt_rand( $this ->height/1.2, $this ->height), $txt_color , $this ->font , $this ->code[ $i ]);
//imagestring($this->img, $this->font_size, $x*$i+mt_rand(3, 6),mt_rand(0, $this->height/4) , $this->code[$i], $font_color);
}
$this ->font_color = $font_color ;
}
//画干扰线
public function create_pix(){
$pix_color = $this ->font_color;
for ( $i =0; $i <100; $i ++){
imagesetpixel( $this ->img, mt_rand(0, $this ->width),mt_rand(0, $this ->height), $pix_color );
}
for ( $j =0; $j <4; $j ++){
imagesetthickness( $this ->img, mt_rand(1, 2));
imageline( $this ->img, mt_rand(0, $this ->width), mt_rand(0, $this ->height), mt_rand(0, $this ->width), mt_rand(0, $this ->height), $pix_color );
}
}
//得到验证码
public function getCode(){
return strtoupper ( $this ->code);
}
//输出验证码
private function show_code(){
header( "Content-type:image/png" );
imagepng( $this ->img);
imagedestroy( $this ->img);
}
}
|
效果图:
以上就是使用对象编写的验证码类的全部内容,希望对大家学习PHP程序设计有所帮助。