本文实例为大家分享了一个PHP写的登录验证码功能,供大家参考,具体内容如下
ShowKey.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
|
<?php
session_start();
//设置COOKIE或Session
function esetcookie( $name , $str , $life =0){
//本函数将字符串 str 全部变小写字符串使验证码输入不区分大小写----在提交表单进行session比较同样需要次函数转化
$_SESSION [ $name ]= strtolower ( $str );
}
//获取随机字符 此函数区分字符大小写 如果不区分大小写可加入函数strtolower
function domake_password( $len )
{
$chars = array (
/*"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X", "Y", "Z",*/ "0" , "1" , "2" ,
"3" , "4" , "5" , "6" , "7" , "8" , "9"
);
$charsLen = count ( $chars ) - 1;
shuffle( $chars ); // 将数组打乱
$output = "" ;
for ( $i =0; $i < $len ; $i ++)
{
$output .= $chars [mt_rand(0, $charsLen )]; //获得一个数组元素
}
return $output ;
}
//显示验证码
function ShowKey(){
$key =domake_password(4); //获取随机值
$set =esetcookie( "checkkey" , $key ); //将随机值写入cookie或session
//是否支持gd库
if (function_exists( "imagejpeg" ))
{
header ( "Content-type: image/jpeg" );
$img =imagecreate(47,20);
$blue =imagecolorallocate( $img ,102,102,102);
$white =ImageColorAllocate( $img ,255,255,255);
$black =ImageColorAllocate( $img ,71,71,71);
imagefill( $img ,0,0, $blue );
imagestring( $img ,5,6,3, $key , $white );
for ( $i =0; $i <90; $i ++) //加入干扰象素
{
imagesetpixel( $img ,rand()%70,rand()%30, $black );
}
imagejpeg( $img );
imagedestroy( $img );
}
elseif (function_exists( "imagepng" ))
{
header ( "Content-type: image/png" );
$img =imagecreate(47,20);
$blue =imagecolorallocate( $img ,102,102,102);
$white =ImageColorAllocate( $img ,255,255,255);
$black =ImageColorAllocate( $img ,71,71,71);
imagefill( $img ,0,0, $blue );
imagestring( $img ,5,6,3, $key , $white );
for ( $i =0; $i <90; $i ++) //加入干扰象素
{
imagesetpixel( $img ,rand()%70,rand()%30, $black );
}
imagepng( $img );
imagedestroy( $img );
}
elseif (function_exists( "imagegif" ))
{
header( "Content-type: image/gif" );
$img =imagecreate(47,20);
$blue =imagecolorallocate( $img ,102,102,102);
$white =ImageColorAllocate( $img ,255,255,255);
$black =ImageColorAllocate( $img ,71,71,71);
imagefill( $img ,0,0, $blue );
imagestring( $img ,5,6,3, $key , $white );
for ( $i =0; $i <90; $i ++) //加入干扰象素
{
imagesetpixel( $img ,rand()%70,rand()%30, $black );
}
imagegif( $img );
imagedestroy( $img );
}
elseif (function_exists( "imagewbmp" ))
{
header ( "Content-type: image/vnd.wap.wbmp" );
$img =imagecreate(47,20);
$blue =imagecolorallocate( $img ,102,102,102);
$white =ImageColorAllocate( $img ,255,255,255);
$black =ImageColorAllocate( $img ,71,71,71);
imagefill( $img ,0,0, $blue );
imagestring( $img ,5,6,3, $key , $white );
for ( $i =0; $i <90; $i ++) //加入干扰象素
{
imagesetpixel( $img ,rand()%70,rand()%30, $black );
}
imagewbmp( $img );
imagedestroy( $img );
}
else
{
//不支持验证码
header( "content-type:image/jpeg\r\n" );
header( "Pragma:no-cache\r\n" );
header( "Cache-Control:no-cache\r\n" );
header( "Expires:0\r\n" );
$fp = fopen ( "data/vdcode.jpg" , "r" );
}
}
ShowKey();
?>
|
调用方法:
复制代码 代码如下:
<img src="ShowKey.php" name="KeyImg" id="KeyImg" onClick="KeyImg.src='ShowKey.php?'+Math.random()">
以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。