标题:
用PHP实现验证码功能
[打印本页]
作者:
php
时间:
2007-7-14 10:29
标题:
用PHP实现验证码功能
用PHP实现验证码功能
作者:hutuworm
目前,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了
验证码技术。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,
图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输
入表单提交网站验证,验证成功后才能使用某项功能。
我们这里展示了如何编写PHP程序实现验证码功能:
代码一:
<
?
/*
* Filename: authpage.php
* Author: hutuworm
* Date: 2003-04-28
* @Copyleft hutuworm.org
*/
srand
(
(
double
)
microtime
(
)
*
1000000
)
;
//验证用户输入是否和验证码一致
if
(
isset
(
$
HTTP_POST_VARS
[
'authinput'
]
)
)
{
if
(
strcmp
(
$
HTTP_POST_VARS
[
'authnum'
]
,
$
HTTP_POST_VARS
[
'authinput'
]
)
=
=
0
)
echo
"验证成功!"
;
else
echo
"验证失败!"
;
}
//生成新的四位整数验证码
while
(
(
$
authnum
=
rand
(
)
%
10000
)
<
1000
)
;
?
>
<
form
action
=
authpage
.
php
method
=
post
>
<
table
>
请输入验证码:
<
input
type
=
text
name
=
authinput
style
=
"width: 80px"
>
<
br
>
<
input
type
=
submit
name
=
"验证"
value
=
"提交验证码"
>
<
input
type
=
hidden
name
=
authnum
value
=
<
?
echo
$
authnum
;
?
>
>
<
img
src
=
authimg
.
php
?
authnum
=
<
?
echo
$
authnum
;
?
>
>
<
/
table
>
<
/
form
>
代码二:
<
?
/*
* Filename: authimg.php
* Author: hutuworm
* Date: 2003-04-28
* @Copyleft hutuworm.org
*/
//生成验证码图片
Header
(
"Content-type: image/PNG"
)
;
srand
(
(
double
)
microtime
(
)
*
1000000
)
;
$
im
=
imagecreate
(
58
,
28
)
;
$
black
=
ImageColorAllocate
(
$
im
,
0
,
0
,
0
)
;
$
white
=
ImageColorAllocate
(
$
im
,
255
,
255
,
255
)
;
$
gray
=
ImageColorAllocate
(
$
im
,
200
,
200
,
200
)
;
imagefill
(
$
im
,
68
,
30
,
$
gray
)
;
//将四位整数验证码绘入图片
imagestring
(
$
im
,
5
,
10
,
8
,
$
HTTP_GET_VARS
[
'authnum'
]
,
$
black
)
;
for
(
$
i
=
0
;
$
i
<
50
;
$
i
+
+
)
//加入干扰象素
{
imagesetpixel
(
$
im
,
rand
(
)
%
70
,
rand
(
)
%
30
,
$
black
)
;
}
ImagePNG
(
$
im
)
;
ImageDestroy
(
$
im
)
;
?
>
本文程序在Apache 2.0.45 + PHP 4.3.1环境下运行通过。
欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/)
Powered by Discuz! 6.0.0