php在apache如何验证码,用PHP实现验证码功能

目前,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。

我们这里展示了如何编写PHP程序实现验证码功能:

代码一:

/*

*  Filename:  authpage.php

*  Author:  hutuworm

*  Date:  2004-09-26

*  @Copyleft  hutuworm.org

*/

srand((double)microtime()*1000000);

//验证用户输入是否和验证码一致

if(isset())

{

if(strcmp(,)==0)

echo "验证成功!";

else

echo "验证失败!";

}

//生成新的四位整数验证码

while((=rand()%10000)<1000);

?>

请输入验证码:

>

        authimg.php?authnum=<?>

代码二:

/*

*  Filename:  authimg.php

*  Author:  hutuworm

*  Date:  2003-04-28

*  @Copyleft  hutuworm.org

*/

//生成验证码图片

Header("Content-type: image/PNG");

srand((double)microtime()*1000000);

= imagecreate(58,28);

= ImageColorAllocate(, 0,0,0);

= ImageColorAllocate(, 255,255,255);

= ImageColorAllocate(, 200,200,200);

imagefill(,68,30,);

//将四位整数验证码绘入图片

imagestring(, 5, 10, 8, , );

for(=0;<50;++)  //加入干扰象素

{

imagesetpixel(, rand()%70 , rand()%30 , );

}

ImagePNG();

ImageDestroy();

?>

本文程序在Apache 2.0.45 + PHP 4.3.1环境下运行通过。

上文只是对验证码功能的一个简单实现,并没有考虑商用安全性问题。如果要增强安全性,将此功能投入商业应用,则可以通过以下几个步骤实现:

1. 启用Session。

2. authnum在authimg.php中生成,并计算md5sum,存入session。

3. authpage.php将authinput计算md5sum后,与session中的authnum(md5sum)对比得出验证结果。

本站注:作者使用了简单的代码实现了很酷的功能。不过在添加干扰像素时的效果不是太好,大家可以看一下雨声论坛登录时的效验码(http://ror.cn/perl/ut/user_login.cgi),偶把第二段代码稍改了一下,生成了与其类似的效果。

修改后的代码如下:

/*

*  Filename: authimg.php

*  Author:  hutuworm

*  Date:   2004-09-26

*  @Copyleft hutuworm.org

*/

//生成验证码图片

Header("Content-type: image/PNG");

srand((double)microtime()*1000000);

= imagecreate(62,20);

= ImageColorAllocate(, 0,0,0);

= ImageColorAllocate(, 255,255,255);

= ImageColorAllocate(, 200,200,200);

imagefill(,68,30,);

while((=rand()%100000)<10000);

//将四位整数验证码绘入图片

imagestring(, 5, 10, 3, , );

for(=0;<200;++)  //加入干扰象素

{

= ImageColorallocate(,rand(0,255),rand(0,255),rand(0,255));

imagesetpixel(, rand()%70 , rand()%30 , );

}

ImagePNG();

ImageDestroy();

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值