查看文章 |
如何生成随机数字图片验证?
2007-09-07 16:51
<?php /*********************** * 文件名:makeImg.php * 作者:乐言(QQ:7928478) * 主页:www.leyan.net * 时间:2006-1-7 * 功能:生成验证图片 ************************/ /* 作用:取得随机字符串 参数: 1、(int)$length = 32 #随机字符长度,默认为32 2、(int)$mode = 0 #随机字符类型,0为大小写英文和数字,1为数字,2为小写子木,3为大写字母,4为大小写字母,5为大写字母和数字,6为小写字母和数字 返回:取得的字符串 */ function getCode ($length = 32, $mode = 0) { switch ($mode) { case "1": $str = "1234567890"; break; case "2": $str = "abcdefghijklmnopqrstuvwxyz"; break; case "3": $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; break; case "4": $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; break; case "5": $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; break; case "6": $str = "abcdefghijklmnopqrstuvwxyz1234567890"; break; default: $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; break; } $result=""; $l=strlen($str); for($i=0;$i < $length;$i++){ $num = rand(0, $l-1); //如果$i不减1,将不一定生成4位数, 因为$num = rand(0,10).会随机产生10,$str[10] 为空 $result .= $str[$num]; } return $result; } $authnum =getCode(4,1); //生成验证码图片 Header("Content-type: image/JPEG"); //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); //将四位整数验证码绘入图片 //ImageTTFText($im,16,0,5,18,$white,"simhei.ttf",$authnum); imagestring($im, 5, 6, 3, $authnum, $white); //加入干扰象素 for($i=0;$i<200;$i++) { imagesetpixel($im, rand()%70, rand()%30, $gray); } ImageJPEG($im); ImageDestroy($im); ?> |
最近读者: