我是靠谱客的博主 贤惠钻石,这篇文章主要介绍实现数字或字母,数字混合验证码,现在分享给大家,希望可以做个参考。

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

##实现数字或字母,数字混合验证码

1.首先定义验证码的背景图片

<?php
session_start();//开启session;
$image=imagecreatetruecolor(100, 30);//生成一张长100,高30的背景(默认颜色是黑色)
$bgcolor=imagecolorallocate($image, 255, 255, 255);//把背景定义白色
imagefill($image,0,0,$bgcolor);//所定义的颜色进行区域填充

2.1这里是实现数字验证码的关键部分

for($i=0;$i<4;$i++){
$fontsize=6;//字体大小
$fontcolor=imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));//底图已经为白色就将字体颜色设伪随机的
$fontcontent=rand(0,9);//随机生成0-9数字
$x=($i*100/4)+rand(5,10);//考虑每个字所占的宽度,设置一个算法
$y=rand(5,10);//数字放到5-10这个区间内
imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor); //在图像资源上画出随机数字
}

2.2只设置数字验证码似乎很觉得有些单一,想要实现更好的效果呢,在这里我们可以实现数字与字母混合验证码,这也是最常见的验证码。

$capatch_code="";
for($i=0;$i<4;$i++){
$fontsize=6;//字母大小
$fontcolor=imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));//底图已经为白色就将字体颜色设伪随机的
$data='abcdefghijkmnopqrstuwxy3456789';//可以把容易混淆的字母和数字去掉
$fontcontent=substr($data,rand(0,strlen($data)),1);//截取字典$data里的随机数
$capatch_code.=$fontcontent;//把验证码保存起来
$x=($i*100/4)+rand(5,10);//考虑每个字母所占的宽度,设置一个算法
$y=rand(5,10);//字母放到5-10这个区间内
imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor); //在图像资源上画出随机数字
}
$_SESSION['authcode']=$capatch_code;//验证码保存到authcode变量中

2.3验证码大体实现了,这时咱们是不是经常会看点验证码图片上有很多干扰点和干扰线条呀,这是我们就要设置干扰元素啦,小伙伴要注意的是,咱们在设置干扰元素的时候,位置和数量是关键,切记喧宾夺主啦,毕竟咱们的主角可不是干扰元素呀。

for($i=0;$i<200;$i++){//追加点,数量小于200
$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++){//追加线,数量小于3
$linecolor = imagecolorallocate($image, rand(80,220), rand(80,220), rand(80,220));
imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);
}

2.4 干扰元素设计好了呢,成品马上就要降生啦,咱们现在要做的就是收尾工作啦,这时候就要定义一下图片类型啦,然后并别忘了一定要输出咱们的成品哦,为了不暂用空间呢,咱们在一开始的时候是不是设置了 (session_start();//开启session),最后咱们就要用(imagedestroy($image);//销毁)关闭啦,毕竟做事咱们有头有尾是吧。

header('content-type:image/png');//定义图片类型
imagepng($image);//输出
imagedestroy($image);//销毁
?>

这个就是咱们的成果啦

转载于:https://my.oschina.net/u/2953372/blog/802829

最后

以上就是贤惠钻石最近收集整理的关于实现数字或字母,数字混合验证码的全部内容,更多相关实现数字或字母内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(115)

评论列表共有 0 条评论

立即
投稿
返回
顶部