Rumah >pembangunan bahagian belakang >tutorial php >PHP生成指定位数验证码与可控干扰元素第二篇
这篇文章介绍的内容是关于PHP生成指定位数验证码与可控干扰元素第二篇,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
生成验证码:文件名为:buildVerifyCode.func.php
<?php //生成指定位数可控混合验证码 function buildVerifyCode($type,$length){ //$type0,1,2可以为数字,大小写字母,数字加大小写字母验证码 //$length指定了验证码的长度 switch($type){ case 0: $string=join('',range(0,9)); break; case 1: //range('a','z')将括号中的内容作为键值生成一个索引数组 //array_merge($array1,$array2)合并两个数组中的键值,生成新索引数组 //join('',$array)以空连接数组中的值,以数组的内容生成字符串 $string=join('',array_merge(range('a','z'),range('A','Z'))); break; case 2: $string=join('',array_merge(range('a','z'),range('A','Z'),range(0,9))); break; } //str_shuffle打乱字符串,返回值是字符串,不像shuffle,返回值是bool $string=str_shuffle($string); //substr截取$length位数的验证码 return substr($string,0,$length); }
生成图片验证码:文件名为:getVerifyCode.func.php
<?php function getVerifyCodeImg($type=2,$length=4,$pixel=false,$line=false){ $width=100; $height=30; //新建画布,默认黑色底色 $image=imagecreatetruecolor($width,$height); //新建白色,用于后面覆盖黑色的底色 $white=imagecolorallocate($image,255,255,255); //新建白色矩形区域,覆盖原始画布 imagefilledrectangle($image,1,1,$width-1,$height-1,$white); //引入文件 require 'buildVerifyCode.func.php'; //调用buildVerifyCode方法 $chars=buildVerifyCode($type,$length); for($i=0;$i<$length;$i++){ $size=mt_rand(14,16); $angle=mt_rand(-15,15); $x=(100/$length)*$i; $y=mt_rand(20,25); $color=imagecolorallocate($image,mt_rand(70,100),mt_rand(50,120),mt_rand(70,130)); $fontfiles=['msyh.ttc','msyhbd.ttc','msyhl.ttc','simsun.ttc','Sitka.ttc']; $fontfile="../fonts/".$fontfiles[mt_rand(0,4)]; $text=substr($chars,$i,1); imagettftext($image,$size,$angle,$x,$y,$color,$fontfile,$text); } if($pixel){ for($i=0;$i<$pixel;$i++){ $color=imagecolorallocate($image,mt_rand(150,160),mt_rand(140,170),mt_rand(130,200)); imagesetpixel($image,mt_rand(0,$width-1),mt_rand(0,$height-1),$color); } } if($line){ for($i=0;$i<$line;$i++){ $color=imagecolorallocate($image,mt_rand(150,180),mt_rand(110,170),mt_rand(140,190)); imageline($image,mt_rand(0,$width-2),mt_rand(0,$height-3),mt_rand(0,$width-4),mt_rand(0,$height-5),$color); } } header('content-type:image/png'); imagepng($image); }
调用验证码:文件名为:getVerifyImg.php
<?php // 测试 // require 'buildVerifyCode.func.php'; // echo buildVerifyCode(2,4); require 'getVerifyCodeImg.php'; /** * $type验证码类型,1为纯数字,2为大小写字母,3为数字加大小写字母 * $length验证码长度,建议设置区间为4-6 * $pixel干扰元素小点,建议设置200 * $line干扰元素线条,建议设置4 * getVerifyCodeImg($type,$length,$pixel,$line); */ getVerifyCodeImg(2,6,200,4);
相关推荐:
Atas ialah kandungan terperinci PHP生成指定位数验证码与可控干扰元素第二篇. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!