//********************关于验证码的DEMO****************************** session_start();//启动session的记录机制方便后续随机值的对比 function getCode($num,$w,$h){//创建获得随机验证码方法参数1,2,3;分别为:验证码数量,验证码图像宽,验证码图像高; $code=''; for($i=0;$i<$num;$i++){//生成随机验证$num代表生成的个数; $code.=rand(0,9);//随机生成0,9的数字 } $_SESSION['hello_num']=$code;//将获取到的数字或者字符保存在SESSION header("Content-Type:image/PNG");//指定页面输出为图片; $im=imagecreate($w, $h);//创建一个画布; $black=imagecolorallocate($im, 0, 0, 0);//设置画布的颜色1 $gray=imagecolorallocate($im, 200, 200, 200);//设置画布的颜色2 $bgcolor=imagecolorallocate($im, 255, 255, 255);//设置画布的颜色3 imagefill($im, 0, 0, $gray);//填充画布颜色 imagerectangle($im, 0, 0, $w-1, $h-1, $black);//画画布边框; //随机绘制两条虚线,起干扰作用; $style=array($black,$black,$black,$black,$black,$gray,$gray,$gray,$gray,$gray); imagesetstyle($im, $style); $y1=rand(0,$h); $y2=rand(0,$h); $y3=rand(0,$h); $y4=rand(0,$h); imageline($im, 0, $y1, $w, $y3, IMG_COLOR_STYLED); imageline($im, 0, $y2, $w, $y4, IMG_COLOR_STYLED); //在画布上随机生成大量黑点,起干扰作用; for($i=0;$i<80;$i++){ imagesetpixel($im, rand(0,$w), rand(0,$h),$black); } //将数字随机显示在画布上,字符的水平间距和位置按照一定的波动范围随机生成; $strx=rand(3,8); for($i=0;$i<$num;$i++){ $strpos=rand(1,6); imagestring($im,5,$strx,$strpos,substr($code,$i,1),$black); $strx+=rand(8,12); } imagepng($im);//输出图片; imagedestroy($im);//释放图片所占内存; } getCode(4,60,20);