用PHP实现验证码功能

图片数字证实代码Code:?/** Filename:
authpage.php*/srand((double)microtime()*1000000State of Qatar;//验证客户输入是不是和验证码同样if(isset($_POST[‘authinput’])){if(strcmp($_POST[‘authnum’],$_POST[‘authinput’]卡塔尔(قطر‎==0卡塔尔国echo
“验证成功!”;elseecho
“验证战败!”;}//生成新的多个人整数验证码while(($authnum=rand(卡塔尔国%10000卡塔尔国1000卡塔尔;?form
action=authpage.php method=posttable请输入验证码:input type=text
name=authinput brinput type=submit name=”验证” value=”提交验证码”input
type=hidden name=authnum value=? echo $authnum; ?img
src=authimg.php?authnum=? echo $authnum;
?/table/form————————————————————————————————————-?/**
Filename: authimg.php*///生成验证码图片Header(“Content-type:
image/PNG”State of Qatar;srand((doubleState of Qatarmicrotime(State of Qatar*1000000卡塔尔;$im =
imagecreate(58,28卡塔尔;$black = ImageColorAllocate($im, 0,0,0State of Qatar;$white =
ImageColorAllocate($im, 255,255,255卡塔尔;$gray = ImageColorAllocate($im,
200,200,200卡塔尔国;imagefill($im,68,30,$grayState of Qatar;//将几人整数验证码绘入图片imagestring($im,
5, 10, 8, $HTTP_GET_VARS[‘authnum’], $whiteState of Qatar;for($i=0;$i50;$i++卡塔尔国//出席烦恼象素{imagesetpixel($im, rand(卡塔尔%70 , rand(卡塔尔国%30 ,
$gray卡塔尔;}ImagePNG($imState of Qatar;ImageDestroy($im卡塔尔国;?

修正后的代码如下:

  1. 启用Session。 2.
    authnum在authimg.php中变化,并总括md5sum,存入session。 3.
    authpage.php将authinput总结md5sum后,与session中的authnum相比得出验证结果。

for($i=0;$i50;$i++卡塔尔(قطر‎ //参与郁闷象素 { imagesetpixel($im, rand(State of Qatar%70 ,
rand(卡塔尔%30 , $blackState of Qatar; }

澳门新浦京娱乐游戏,笔者:hutuworm 来源:糊涂馋寺
近来,不菲网址为了防微杜渐顾客采用机器人自动注册、登陆、灌溉,都使用了
验证码能力。所谓验证码,即是将一串随机产生的数字或标识,生成一幅图片,
图片里丰裕一些烦扰象素,由客商肉眼分辨此中的验证码消息,输
入表单提交网址认证,验证成功后能力运用某项功效。

?php /* * Filename: authpage.php * Author: hutuworm * Date:
2003-04-28 * @Copyleft hutuworm.org */

//将四个人整数验证码绘入图片 imagestring($im, 5, 10, 8,
$HTTP_GET_VARS[‘authnum’], $black);

代码一:

//验证客户输入是或不是和验证码相通if(isset($HTTP_POST_VARS[‘authinput’])) {
if(strcmp($HTTP_POST_VARS[‘authnum’],$HTTP_POST_VARS[‘authinput’]State of Qatar==0卡塔尔国echo “验证成功!”; else echo “验证失利!”; } //生成新的几个人整数验证码
while(($authnum=rand(卡塔尔%10000State of Qatar1000卡塔尔国; ? form action=authpage.php
method=post table 请输入验证码:input type=text name=authinput br input
type=submit name=”验证” value=”提交验证码” input type=hidden
name=authnum value=? echo $authnum; ? img src=authimg.php?authnum=? echo
$authnum; ? /table /form

?php /* * Filename: authimg.php * Author: hutuworm * Date:
2003-04-28 * @Copyleft hutuworm.org */ //生成验证码图片
Header(“Content-type: image/PNG”卡塔尔(قطر‎; srand((double卡塔尔(قطر‎microtime(State of Qatar*1000000卡塔尔国;
$im = imagecreate(62,20State of Qatar; $black = ImageColorAllocate($im, 0,0,0State of Qatar;
$white = ImageColorAllocate($im, 255,255,255卡塔尔; $gray =
ImageColorAllocate($im, 200,200,200卡塔尔国; imagefill($im,68,30,$gray卡塔尔(قطر‎;
while(($authnum=rand(卡塔尔(قطر‎%100000State of Qatar10000卡塔尔(قطر‎;//将几个人整数验证码绘入图片
imagestring($im, 5, 10, 3, $authnum, $black卡塔尔; for($i=0;$i200;$i++)//参加干扰象素 { $randcolor =
ImageColorallocate($im,rand(0,255State of Qatar,rand(0,255State of Qatar,rand(0,255卡塔尔State of Qatar;
imagesetpixel($im, rand(卡塔尔国%70 , rand(卡塔尔(قطر‎%30 , $randcolorState of Qatar; } ImagePNG($im卡塔尔(قطر‎;
ImageDestroy($im卡塔尔(قطر‎; ?

正文程序在Apache 2.0.45 + PHP 4.3.1情况下运转通过。

//生成验证码图片 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);

代码二: ?php /* * Filename: authimg.php * Author: hutuworm * Date:
2003-04-28 * @Copyleft hutuworm.org */

上文只是对验证码功用的四个粗略完结,并不曾思考商用安全性问题。即使要抓牢安全性,将此意义投入商业利用,则足以由此以下多少个步骤实现:

本站注:作者利用了归纳的代码达成了相当酷的效率。然而在抬高级干部扰像素时的功用不是太好,大家能够看一降雨声论坛登入时的效验码(_login.cgi卡塔尔国,偶把第二段代码稍改了一晃,生成了与其相同的效果。

咱俩那边显得了何等编写PHP程序达成验证码效用:

ImagePNG($im); ImageDestroy($im); ?

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

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图