Blogger Information
Blog 8
fans 0
comment 0
visits 5707
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP实现验证码的制作
蓝谑的博客
Original
797 people have browsed it
  • 第一步:利用imagecreatetruecolor($width,$height)函数制作一个指定宽高的底图

$image=imagecreatetruecolor(100, 30);
  • 第二步:使用imagecolorallcate($image,$red,$green,$blue)方法做指定背景颜色的填充,该方法默认是输出黑色

$bg_color=imagecolorallocate($image, 255, 255, 255); //代表白色
  • 第三步:再将我们指定好的背景色填充到我们的底图之中

imagefill($image, 0, 0, $bg_color);
  • 第四步:数字加字码混合验证码的制作

for($i=0;$i<4;$i++){
		//循环输出四个数字
		$fontsize=6;//字体的大小为6
		$fontcolor=imagecolorallocate($image, rand(0, 120), rand(0,120),rand(0,120));//定义字体的颜色
		$data="abcdefghijklmnopqrstuvwxyz1234567890";//定义字母和数字的组合
//		$fontcontent=rand(0,9);//定义数字体的取值范围
		$font_content=substr($data,rand(0, strlen($data)),1);
		$captch_code.="$font_content";
		$x=($i*100/4)+rand(5,10);
		$y=rand(5, 10);
		imagestring($image, $fontsize, $x, $y, $font_content, $fontcolor);
	}
  • 第五步:增加干扰元素(有增加点和增加线这两种干扰方式)

        //增加点干扰元素
//	for($i=0;$i<200;$i++){
//		$pointcolor=imagecolorallocate($image, rand(0,200), rand(0, 200), rand(0,200));
//		imagesetpixel($image, rand(1,99), rand(1, 29), $pointcolor);//该函数创建单一的点
//	}
	//增加线干扰元素
	for($i=0;$i<8;$i++){
		$line_color=imagecolorallocate($image,rand(60, 220), rand(60, 220), rand(60, 220));
		imageline($image, rand(1, 99), rand(1, 29),rand(1,99),rand(1,29), $line_color);
		//该内置函数是用来创建线的
//		imageline($image, $x1, $y1, $x2, $y2, $color);
	}
  • 第六步:用php的header()方法表名输出内容的格式为png

header('content-type:image/png');
  • 第七步:显示图片

imagepng($image);
  • 第八步:销毁图片以便于系统资源的回收

imagedestroy($image);
  • 第九步:我们使用$_SESSION来存储我们的验证码

session_start();//放在一开始
$captch_code="";//用来存随机生成的验证码内容,放在第三步后面
$captch_code.="$font_content";//将随机生成的验证码赋值
$_SESSION['code']=$captch_code;//将验证码的值存入$_SESSION中,放在设置干扰元素之前

  • 验证码的使用

  • form表单之中图片验证码的写法(运用了js的知识)

<img src="img.php" alt="验证码,看不清楚,换一张"onclick="this.src=this.src+'?'+new Date().getTime();"/>;
//img.php是我们生成验证码的PHP程序
  • 表单处理程序:如何验证验证码是否输入正确

if(isset($_REQUEST['code'])){
		session_start();
		if(strtolower($_REQUEST['code'])==$_SESSION['code']){
		    //这里面的内容是自己随便输入的
			header('Content-type:text/html;charset=UTF8');
			echo "<font color='#0000cc'>输入正确</font>";
		}else{ 
		    //这里面对内容是自己随便输入的
			header('Content-type:text/html;charset=UTF8');
			echo "<font color='#cc0000'><b>输入错误</b></font>";
		}
		exit();
	}

  



Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post