关于验证码的DEMO

//********************关于验证码的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);


你可能感兴趣的:(关于验证码的DEMO)