php验证码制作
1、1)底图制作
$image = imagecreate(100, 30); // 创建画布 $bgcolor = imagecolorallocate($image, 255, 255, 255);//定义画布背景颜色 imagefill($image,0,0,$bgcolor);//填充背景
2、2)生成验证内容 $fontsize=8;//字体大小 $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));//随机验证码字体颜色 $date='qwertyuiopasdfghjklzxcvbnm1234567890';//验证码字典 $fontcontent=substr($date,rand(0,strlen($date)-1),1);//验证码
3、3)生成验证码图片 imagestring函数可以将字符串输出到图像中 imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
4、4)校验验证内容</strong>验证码可以存储在session中,session_start应该放在最顶端用户输入的验证码用表单提交<form method="post"> 验证码图片:<img align="center" src="./yan_zheng_ma.php"/> <input type="text" name="yanzhengma" value=""/> <input type="submit" value="提交"/> </form>
5、以下是完整代码
<?php/*验证码制作干扰点,干扰线保存验证码在服务端*/session_start();$image = imagecreate(100, 30); // 创建画布$bgcolor = imagecolorallocate($image, 255, 255, 255);//定义画布背景颜色imagefill($image,0,0,$bgcolor);//填充背景//输出4位验证码$capatch='';for($i=0;$i<4;$i++){ $fontsize=12;//字体大小 $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));//字体颜色 $date='qwertyupasdfghjklzxcvbnm23456789';//验证码字典 $fontcontent=substr($date,rand(0,strlen($date)-1),1);//验证码 $capatch.=$fontcontent; //验证码坐标 $x=($i*100/4)+rand(5,10); $y=rand(5,10); //生成验证码 imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);}//干扰点for($i=0;$i<200;$i++){ $pointcolor=imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200)); imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);}//干扰线for($i=0;$i<3;$i++){ $linecolor=imagecolorallocate($image,rand(100,200),rand(100,200),rand(100,200)); imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);}$_SESSION['authcode']=$capatch;header('content-type:image/png'); // 像浏览器输出图片头信息imagepng($image); // 输出图片到浏览器imagedestroy($image);//销毁图片