php 验证码

<?php
	/*
	图片验证码 Powered By KASON test http://www.111cn.net   */
	session_start();
	//getCode(4,84,37); 
	code_verify(84,37,4);
	/**
	* 大写,小写,数字混合
	*/
	function alpnum_verify() {
		$length = 4;
		$code = "";
		$alpnum_arr = array();
		for($i = 97; $i <= 122; $i++) {
			$alpnum_arr[] = chr($i);
		}
		for($i = 65; $i <= 90; $i++) {
			$alpnum_arr[] = chr($i);
		}
		for($i = 0; $i < 10; $i++) {
			$alpnum_arr[] = $i;
		}
		$unset_arr = array(‘0‘,‘o‘,‘O‘,‘I‘,‘i‘,‘l‘);
		foreach($unset_arr as $v) {
			$key = array_search($v,$alpnum_arr);
			unset($alpnum_arr[$key]);
		}
		shuffle($alpnum_arr); //打乱数组
		for($i = 0; $i < $length; $i++) {
			$alpha_site = rand(0,55);
			$code .= $alpnum_arr[$alpha_site]; 
		}
		return $code;
	}
	/******************************
	 *$num = 4;//验证码个数
	 *$width = 80;//验证码宽度
	 * $height = 20;//验证码高度
	 ******************************/
	function getCode($num,$width,$height) { 
		$code=‘ ‘;
		for($i=0;$i<$num;$i++)//生成验证码
		{
			switch(rand(0,2))
			{
				case 0:$code[$i]=chr(rand(48,57));break;//数字
				case 1:$code[$i]=chr(rand(65,90));break;//大写字母
				case 2:$code[$i]=chr(rand(97,122));break;//小写字母
			}
		}
		$_SESSION["VerifyCode"] = $code;
		$image=imagecreate($width,$height);
		
		//随机绘制两条虚线,起干扰作用 
		$y1 = rand(0, $height); 
		$y2 = rand(0, $height); 
		$y3 = rand(0, $height); 
		$y4 = rand(0, $height); 
		imageline($image, 0, $y1, $width, $y3, IMG_COLOR_STYLED); 
		imageline($image, 0, $y2, $width, $y4, IMG_COLOR_STYLED); 
		
		imagecolorallocate($image,255,255,255);
		for($i=0;$i<80;$i++)//生成干扰像素
		{
			$dis_color = imagecolorallocate($image,rand(0,2555),rand(0,255),rand(0,255));
			imagesetpixel($image,rand(1,$width),rand(1,$height),$dis_color);
		}
		for($i=0; $i<$num; $i++)//打印字符到图像
		{
			$char_color = imagecolorallocate($image,rand(0,2555),rand(0,255),rand(0,255));
			imagechar($image,600,($width/$num)*$i,rand(0,15),$code[$i],$char_color);
		}
		header("Content-type:image/png");
		imagepng($image);//输出图像到浏览器
		imagedestroy($image);//释放资源
	}
	/**
	*
	*/
	function code_verify($w,$h,$num) {
		
		$code = ""; 
	
		$code = alpnum_verify();

		$_SESSION["VerifyCode"] = $code;
		//创建图片,定义颜色值 
		header("Content-type: image/PNG"); 
		$im = imagecreate($w, $h); 
		$black = imagecolorallocate($im, 0, 0, 0); 
		$bgcolor = imagecolorallocate($im, 255, 255, 255); 
		$border_color = imagecolorallocate($im, rand(0,255),rand(0,255),rand(0,255));
		//填充背景 
		imagefill($im, 0, 0, $bgcolor); 
	 
		//画边框 
		imagerectangle($im, 0, 0, $w-1, $h-1, $border_color); 
	 
		//随机绘制两条虚线,起干扰作用 
		for($i = 2; $i < 4; $i++) {
			$noise_color = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
			imageline($im,rand(0,$w/2),rand(0,$h/2),rand($w/2,$w),rand($h/2,$h),$noise_color);
		}	
		$font = dirname(__FILE__)."/../font/font.ttf";
	 
		//在画布上随机生成大量黑点,起干扰作用; 
		for ($i = 0; $i < 80; $i++) { 
			imagesetpixel($im, rand(0, $w), rand(0, $h), $black); 
		} 
		//将数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成 
		$strx = 5; 
		$TFontAngle = array(-20,20); //旋转角度
		$anglelen = count($TFontAngle)-1;
		for ($i = 0; $i < $num; $i++) { 
			$strpos = rand(20, 25); 
			$angle = $TFontAngle[rand(0,$anglelen)];
			imagettftext($im, rand(17,20), $angle, $strx, $strpos,$black , $font, $code[$i]);
			$strx += rand(10, 20); 
		} 
		
		imagepng($im);//输出图片 
		imagedestroy($im);//释放图片所占内存 		
	} 
?>  

  html:

<img src="action/VerifyCode.php" class="yzm-img" title="看不清?换一个"/>

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。