Home  >  Article  >  Backend Development  >  Use PHP to implement verification code function_PHP tutorial

Use PHP to implement verification code function_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 16:09:34878browse

作者: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);
?>
       


       
                请输入验证码:

               
                >
                >
       

       

代码二:

/*
* 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环境下运行通过。

The above is just a simple implementation of the verification code function and does not consider commercial security issues. If you want to enhance security and put this feature into commercial applications, you can implement it through the following steps:

1. Enable Session.
2. authnum is generated in authimg.php, and md5sum is calculated and stored in the session.
3. authpage.php calculates md5sum from authinput and compares it with the authnum (md5sum) in the session to get the verification result.


Note from this site: The author uses simple code to achieve cool functions. However, the effect when adding interfering pixels is not very good. You can take a look at the verification code when logging in to the Yusheng Forum (http://ror.cn/perl/ut/user_login.cgi). I changed the second code slightly. After a while, a similar effect was generated.

The modified code is as follows:

/*
* Filename: authimg.php
* Author: hutuworm
* Date: 2003 -04-28
* @Copyleft hutuworm.org
*/
//Generate verification code image
Header("Content-type: image/PNG");
srand((double )microtime()*1000000);
$im = imagecreate(62,20);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 200,200,200);
imagefill($im,68,30,$gray);
while(($authnum=rand()%100000)< 10000);
//Draw the four-digit integer verification code into the image
imagestring($im, 5, 10, 3, $authnum, $black);
for($i=0;$i< ;200;$i++) //Add interference pixels
{
$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im , rand()%70 , rand()%30 , $randcolor);
}
ImagePNG($im);
ImageDestroy($im);
?>


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/314520.htmlTechArticleAuthor: hutuworm Source: Muddle-headed TempleAt present, many websites use robots to prevent users from automatically registering and logging in. , irrigation, all use verification code technology. The so-called verification code is...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn