PHP开发项目中GD制作验证码图片实例
2017-12-07PHP
项目开发中验证码图片是必不可少的关键环节,比如登录的时候,为了防止机器不停的刷和提交,有了登录验证码,验证码一般有数字和字母加干扰点和干扰线,或者图片验证码,或者汉字验证码。图片验证码一般是事先定义好的图片,给出名称和值,进行验证。下面我们来写一个最常见的字母加数字验证码。先看看效果图吧。
项目开发中验证码图片是必不可少的关键环节,比如登录的时候,为了防止机器不停的刷和提交,有了登录验证码,验证码一般有数字和字母加干扰点和干扰线,或者图片验证码,或者汉字验证码。图片验证码一般是事先定义好的图片,给出名称和值,进行验证。下面我们来写一个最常见的字母加数字验证码。先看看效果图吧。
整个开发的代码有三个文件,一个是前端显示图片的代码default.php,还有就是获取图片的代码captcha.php,最后一个是判断处理的form.php。下面看看代码吧。
default.php
验证码图片:<img border="1" id="capthcha_img" onclick="this.src='captcha.php?r='+Math.random()" src="captcha.php?r=" width="100" height="30" /> 换一个 输入内容:
captcha.php
<?php session_start(); //启动session $image = imagecreatetruecolor(100,30);//创建一个宽100,高度30的图片 $bgcolor=imagecolorallocate($image,255,255,255);//图片背景是白色 imagefill($image,0,0,$bgcolor);//图片填充白色 //随机数,下面的例子是只是数字的验证码 /** for($i=0;$i<4;$i++){ $fontsize=6; $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); $fontcontent=rand(0,9); $x=($i*100/4)+ rand(5,10); $y=rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); } **/ //随机数据,下面的例子是随机数据,包括字母和数字 $captch_code=''; for($i=0;$i<4;$i++){ $fontsize=6; $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); $data='asdfdfglfg74erf21854hgfhgfhkg4ljkghjtrtywiqpoqpwepdfgvnjytyut12313345645667686797800'; $fontcontent=substr($data,rand(0,strlen($data)),1); $captch_code.=$fontcontent; $x=($i*100/4)+ rand(5,10); $y=rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); } $_SESSION['authcode']=$captch_code; //随机点,生成干扰点 for($i=0;$i<200;$i++){ $pointcolor=imagecolorallocate($image,rand(50,120),rand(50,120),rand(50,120)); imagesetpixel($image,rand(1,99),rand(1,99),$pointcolor); } //随机线,生成干扰线 for($i=0;$i<3;$i++){ $linecolor=imagecolorallocate($image,rand(80,220),rand(80,220),rand(80,220)); imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor); } header("content-type:image/png"); imagepng($image); imagedestory($image);
form.php
很赞哦! ()