PHP实现验证码-创新互联

第一步:创建一个画布

创新互联-专业网站定制、快速模板网站建设、高性价比昭苏网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式昭苏网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖昭苏地区。费用合理售后完善,十年实体公司更值得信赖。

第二步:创建颜色

第三步:准备字符

第四步:往 画布上写字符

第五步:画干扰线(点)

第六步:输出格式

第七步:输出图片

第八步:销毁资源

<?php      verify(); function verify($width = 100 , $height = 40 , $num = 5 , $type = 3 ){     //1 创建画布     $image = imagecreatetruecolor($width , $height);          //2 创建颜色  //因为后边总是用,所以写了两个函数,分别是lightColor(浅颜色)、deepColor(深颜色)               //3 创建字符 //这里是自己选择的类型,1 就是纯数字,2 就是纯小字母, 3 就是数字大小写字母的混合     switch($type){         case 1:             //定义字符串             $str = "0123456789";             //打乱字符串             $strNew = str_shuffle($str);             //截取$num个             $string = substr($strNew , 0 , $num);             break;         case 2:             //定义字符             $arr = range('a' , 'z');             //打乱字符串数组             shuffle($arr);             //截取             $tmp = array_slice($arr , 0 , $num);             //连成字符串             $string = join('' , $tmp);             break;         case 3:             $str = "23456789abcdefghjklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ";             $string = substr(str_shuffle($str) , 0 , $num);             break;     }     //给背景填充浅颜色 //背景颜色太深的话验证码就看不清了     imagefilledrectangle($image , 0 , 0 , $width , $height , lightColor($image));          //4 往画布上写入字符     for($i = 0; $i<$num; $i++) {  //因为我们设定的是输出5 个字符,所以$i是小于的$num         //floor是取整,$width / $num 把宽度分了$num块地,*$i是一个字符占一块地,以免全都堆在一块看不出来         $x = floor($width / $num) * $i;         $y = mt_rand(10 , $height - 20);         imagechar ($image , 5 , $x , $y , $string[$i] , deepColor($image));     }          //5 画干扰线、点     //干扰线     for($i = 0; $i<$num; $i++) {         imagearc ($image , mt_rand(10 , $width) , mt_rand(10 , $height) , mt_rand(10 , $width) , mt_rand(10 , $height) , mt_rand(0 , 10) , mt_rand(0 , 270) , deepColor($image));              }     //干扰点     for( $i = 0; $i<50; $i++) {         imagesetpixel($image , mt_rand(0 , $width) , mt_rand(0 , $height) , deepColor($image));     }     ob_clean();//擦除缓冲区       //6 告诉浏览器输出格式:png     header("Content-type: image/png");          //7 输出图片     imagepng($image);          //8 销毁     imagedestroy($image);          return $string;     //echo $string; } //设置深浅颜色 function lightColor ($image) {     return imagecolorallocate($image , mt_rand(120 , 255) , mt_rand(120 , 255) , mt_rand(120 , 255));  } function deepColor ($image) {     return imagecolorallocate($image , mt_rand(0 , 120) , mt_rand(0 , 120) , mt_rand(0 , 120));  }     ?>

特别说明:

 ob_clean();//擦除缓冲区

之前是没有加上这个的,结果就告诉我“因存在错误而无法显示”,如下图:

PHP实现验证码

不过幸运的是,在百度上找到答案了:https://blog.csdn.net/ghbfgb/article/details/50845075。加上之后,就很轻易的解决了这个问题,现在的效果是这样的:

PHP实现验证码

好了。

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

网站标题:PHP实现验证码-创新互联
本文路径:https://www.cdcxhl.com/article28/cocsjp.html

成都网站建设公司_创新互联,为您提供建站公司品牌网站设计App设计企业建站软件开发营销型网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都做网站