PHP生成验证码的原理
时间:2007-06-11 来源:linxh
验证码的实现原理是在服务器端产生一个随机字符串,然后保存在服务器中,以图形方式发送到客户端。客户端在登录的时候输入验证码,如果与服务器端保存的验证码一致,则通过验证;否则重新生成一个验证码发送到客户端。每次的验证码是随机生成的。
下面是一个简单的示例
?php
/*
* Filename: reg_png.php
*/
session_start();
//生成验证码图片
Header("Content-type: image/PNG");
srand((double)microtime()*1000000);
$im = imagecreate(50,20);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 200,200,200);
imagefill($im,0,0,$gray);
//将四位整数验证码绘入图片
$auth_num=$_SESSION['auth_num'];
$_SESSION['last_auth']=$auth_num;
imagestring($im, 5,0,0, $auth_num, $black);
for($i=0;$i100;$i++) //加入干扰象素
{
imagesetpixel($im, rand()%70 , rand()%30 , $black);
}
ImagePNG($im);
ImageDestroy($im);
?>
?php
/*
* Filename: reg.php
*/
session_start();
srand((double)microtime()*1000000);
while(($authnum=rand()%10000)1000);
$_SESSION['auth_num']=$authnum;
//检查验证码是否有效
if($_REQUEST['auth_num']==$_SESSION['last_auth']) {
/*....*/
}
else {
echo "";
echo "";
echo "alert('验证码不准确,请重新输入');";
echo "";
}
}
?>
下面是一个简单的示例
?php
/*
* Filename: reg_png.php
*/
session_start();
//生成验证码图片
Header("Content-type: image/PNG");
srand((double)microtime()*1000000);
$im = imagecreate(50,20);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 200,200,200);
imagefill($im,0,0,$gray);
//将四位整数验证码绘入图片
$auth_num=$_SESSION['auth_num'];
$_SESSION['last_auth']=$auth_num;
imagestring($im, 5,0,0, $auth_num, $black);
for($i=0;$i100;$i++) //加入干扰象素
{
imagesetpixel($im, rand()%70 , rand()%30 , $black);
}
ImagePNG($im);
ImageDestroy($im);
?>
?php
/*
* Filename: reg.php
*/
session_start();
srand((double)microtime()*1000000);
while(($authnum=rand()%10000)1000);
$_SESSION['auth_num']=$authnum;
//检查验证码是否有效
if($_REQUEST['auth_num']==$_SESSION['last_auth']) {
/*....*/
}
else {
echo "";
echo "";
echo "alert('验证码不准确,请重新输入');";
echo "";
}
}
?>
相关阅读 更多 +
排行榜 更多 +