这篇文章介绍的内容是关于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
$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
$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
$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);
相关推荐: