php验证码制作

2025-10-26 02:39:05

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);//销毁图片

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢