所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。
<?php
//生成随机数2006年7月2日:rndnum.php
class rndnum{
function rnd(){
srand((double)microtime()*1000000);
$rnd_number=array(
1=>\'1\',
2=>\'2\',
3=>\'3\',
4=>\'4\',
5=>\'5\',
6=>\'6\',
7=>\'7\',
8=>\'8\',
9=>\'9\',
10=>\'a\',
11=>\'b\',
12=>\'c\',
13=>\'d\',
14=>\'e\',
15=>\'f\',
16=>\'g\',
17=>\'h\',
18=>\'i\',
19=>\'j\',
20=>\'k\',
21=>\'l\',
22=>\'m\',
23=>\'n\',
24=>\'o\',
25=>\'p\',
26=>\'q\',
27=>\'r\',
28=>\'s\',
29=>\'t\',
30=>\'u\',
31=>\'v\',
32=>\'w\',
33=>\'x\',
34=>\'y\',
35=>\'z\',
36=>\'0\'
);
$result=array_rand($rnd_number,6);
$j=count($result);
for ($i=0;$i<$j;$i++) {
$re.=$rnd_number[$result[$i]];
}
//$re=$rnd_number[$result[1]].$rnd_number[$result[2]].$rnd_number[$result[3]].$rnd_number[$result[4]].$rnd_number[$result[5]].$rnd_number[$result[6]].$rnd_number[$result[7]];
//return array_keys($result);
return $re;
}
}
/*用法
$rndnum=new rndnum();
$num=$rndnum->rnd();
echo $num;
*/
?>
生成验证码的图片,将随机数填充到里边:
<?php
//创建于2006年10月10日
Header(\"Content-type: image/PNG\");
require_once(\"rndnum.php\");
$rndnum=new rndnum();
$authnum=$rndnum->rnd();
session_start();
$_SESSION[\"extrra_code\"]=$authnum;
$im = imagecreate(72,20);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 200,200,200);
imagefill($im,0,0,$gray);
imagestring($im,5,10,3,$authnum,$black);
for($i=0;$i<200;$i++) //加入干扰象素
{
$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);
}
ImagePNG($im);
ImageDestroy($im);
?>