image.func.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
|
<?php
require_once ( 'string.func.php' );
function verifyImage( $type =1, $length =4, $pixel =0, $line =0, $sess_name = "verify" ){
session_start();
/*定义长度和宽度*/
$width =80;
$height =30;
/* 创建画布*/
$image =imagecreatetruecolor( $width , $height );
/*本函数用来匹配图形的颜色,供其它绘图函数使用。参数 image 表示图形的 handle。参数 red、green、blue 是色彩三原色,其值从 0 至 255....我在此定义黑色和白色*/
$white =imagecolorallocate( $image , 255, 255, 255);
$black =imagecolorallocate( $image ,0,0,0);
/*本函数将图片的封闭长方形区域着色。参数 x1、y1 及 x2、y2 分别为矩形对角线的坐标。参数 col 表示欲涂上的颜色*/
imagefilledrectangle( $image , 1, 1, $width -2, $height -2, $white );
/*buildRandomString函数用来生成一个验证码*/
$chars =buildRandomString( $type , $length );
/*将验证码给session以便用来判断用户输入是否正确*/
$_SESSION [ $sess_name ]= $chars ;
/*定义字体库*/
$fontfiles = array ( 'msyh.ttf' , 'msyhbd.ttf' , 'simsun.ttc' , 'SIMYOU.TTF' , 'STHUPO.TTF' , 'STKAITI.TTF' , 'STLITI.TTF' );
/*用循环来将验证码一个一个的写入图片中*/
for ( $i =0; $i < $length ; $i ++)
{
$size =mt_rand(14,18);
$angle =mt_rand(-15,15);
/*验证码的横坐标与纵坐标*/
$x =5+ $i * $size ;
$y =mt_rand(20,26);
$color =imagecolorallocate( $image ,mt_rand(50,190),mt_rand(50,200),mt_rand(50,90));
$fontfile = "../font/" . $fontfiles [mt_rand(0, count ( $fontfiles )-1)];
$text = substr ( $chars , $i ,1);
/*本函数将 TTF (TrueType Fonts) 字型文字写入图片*/
imagettftext( $image , $size , $angle , $x , $y , $color , $fontfile , $text );
}
if ( $pixel )
{
for ( $i =0; $i <50; $i ++)
{
/*本函数可在图片上绘出一点。参数 x、y 为欲绘点的坐标,参数 col 表示该点的颜色*/
imagesetpixel( $image , mt_rand(0, $width -1), mt_rand(0, $height -1), $black );
}}
if ( $line )
{
for ( $i =0; $i <10; $i ++)
{
$color =imagecolorallocate( $image ,mt_rand(50,90),mt_rand(50,200),mt_rand(50,90));
/*画线段*/
imageline( $image , mt_rand(0, $width -1), mt_rand(0, $height -1), mt_rand(0, $width -1), mt_rand(0, $height -1), $color );
}
}
/*以gif形式输出*/
header( "content-type:image/gif" );
/*建立GIF图 并输出到网页*/
imagegif( $image );
/*释放与 image 关联的内存*/
imagedestroy( $image );
}
|
string.func.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
|
<?php
function buildRandomString( $type =1, $length =4){
if ( $type ==1)
{
/*join函数把数组转换为字符串。。join() 函数是 implode() 函数的别名*/
$chars =join( "" ,range(0,9));
} elseif ( $type ==2) {
/*array_merge函数合并数组*/
$chars =join( "" , array_merge (range( "a" , "z" ),range( "A" , "Z" )));
} elseif ( $type ==3)
{
$chars =join( "" , array_merge (range( "a" , "z" ),range( "A" , "Z" ),range(0,9)));
}
if ( $length > strlen ( $chars ))
{
exit ( "字符串长度不够" );
}
/*打乱字符串*/
$chars = str_shuffle ( $chars );
return substr ( $chars ,0, $length );
}
?>
|