PHP代码实现登陆字母 数字图片随机验证码

常见的验证码类型有:图像类型、语音类型、视频类型、短信类型等。下面分享学习中的以数字和字母构成的图片验证码示例。

首先,建立0-9随机数,a-z字母随机,A-Z随机,分别用三个索引数组储存起来,然后将三个数组合并。为了将随机码减少重复概率,打乱合并后的数组,取出数组值时将数组“键”也称“下标”随机。代码如下:

//建立四位随机码
$num_arr =range(0,9); //数组储存0-9
$a_arr = range("a","z");
$A_arr = range("A","Z");
//合并三个索引数组
$arr = array_merge($num_arr,$a_arr,$A_arr);
//将合并的数组打乱
shuffle($arr);
//用数组下标取出具体的随机值
$number =$arr[rand(0,61)].$arr[rand(0,61)].$arr[rand(0,61)].$arr[rand(0,61)];

在具体实施验证码中都会有背景以及干扰,那么我们用到php的图像处理,GD库是PHP处理图像的扩展库。提供一系列的图像处理函数,首先要创建一个画布来呈现,把画布颜色以及绘制的文本和干扰线条都要填充到画布上就可以了。具体创建代码如下:

//注意首先要声明格式
header("content-type:image/png");
//创建画布资源
$im = imagecreate(100,50);
/*为画布创建并填充随机背景颜色 **mt_rand(0,255)随机的RGB值 **以下函数imagecolorallocate顺序分别为填充的画布、红色值、绿色值、蓝色值*/
$bgcolor = imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
//文本创建随机颜色
$txtColor = imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
$bgtextColor = imagecolorallocate($im,255,255,255);
//线条创建颜色
$lineColor = imagecolorallocate($im,255,255,255);
//将设置的随机背景颜色填充到画布
imagefill($im,100,50,$bgcolor);
//绘制文本
//角度随即
$xz = mt_rand(-12,12);
//字体描边
/*文本绘制函数imagettftext顺序是填充的画布、字体大小、文本X坐标、文本Y坐标、字体颜色、字体(字体为具体字体文件,注意路径)、填充的字(创建的随机码)
。*/

//imagettftext($im,20,$xz,21,33,$bgtextColor,"COOPBL.TTF",$number);
//imagettftext($im,20,$xz,19,33,$bgtextColor,"COOPBL.TTF",$number);
imagettftext($im,22,$xz,15,33,$bgtextColor,"COOPBL.TTF",$number); //重复写一遍,改变相应值为字体描边
imagettftext($im,20,$xz,15,33,$txtColor,"COOPBL.TTF",$number);

//绘制线条
//线条显示数量
$lineNumber = mt_rand(0,10);
$n = 0;
//循环输出线条
while($n<=$lineNumber){
//线条绘制函数imageline顺序是填充的画布、线条起点坐标x、线条起点坐标y、线条终点坐标x、线条终点坐标y、线条颜色。
imageline($im,mt_rand(0,100),mt_rand(0,50),mt_rand(0,100),mt_rand(0,50),$lineColor);
$n++;
}
//绘制全部完成
//将绘制完成的输出
imagepng($im);

 

那么接下来,我们就要将制作好的验证码在,登陆界面验证码输入出,调取出来,具体的html代码:

<img  src="yzm.php" width="90px" height="35px"  title="看不清,点击换一张" onclick="this.src='yzm.php?rd='+Math.random()" style="cursor:pointer"/>

 

那么整个验证码绘制,调用就全部结束,分享出写好php文件下载,直接调用即可!

非著名均为来自网络,不代表一点新作立场,若为著名原创,转载请注明出处:http://ydxinzuo.cn/archives/1246

作者: xinyuan7630

发表评论

邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

在线咨询: QQ交谈

邮箱: 303817524@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部