PHP短信验证码小程序,基于php实现的验证码小程序

验证码功能(个人理解):

减轻服务器的压力(如12306的验证码功能);

防止暴力注册

个人思路:在a-z,A-Z,1-9生成n位随机的数来构成新的验证码。

关于生成验证码的几个小函数

range() //指定范围输出一个数组

a) 如: range(1,9)

array_merge()//合并数组 a) array_merge(数组1,数组2….)

array_rand(数组,数量)

a) 随机从数组中取出几个下标返回一个数组

shuffle(数组)//将再一次打乱数组中元素

mt_rand(指定一个范围) //生成一个更好的随机数

如: mt_rand(1,5) //生成一个在1-5之间的任意数

生成验证码代码

$value) {//遍历数组

$code.= $arr[$value];//根据下标取数组中的值

}

var_dump($code);

?>

运行结果截图

91cfa7855ad4e26842f5c3bcdd9f44b5.png

完善:要把验证码添加到图像中这样的验证码才逼真

在完善之前先介绍有关图像创建的大致步骤

创建图像

方法一: 创建一个真彩色图像 (空画布)

imagecreatetruecolor(width, height) //创建一个真彩色图像

说明:

width : 画布的宽度(像素)

height: 画布的高度(像素)

返回值为图像资源

29d55cd6c69bcf165a87037caa2a36a0.png

注意:

e1b40dbae7df17ac3e9bbfe52a8a7307.png

为真彩色图像: 填充颜色

imagefill(image, x, y, color) //为图像资源填充颜色

说明:

image //图像资源

x,y,填充的坐标点(注意:填充的与此点最接近的颜色)

color; //用什么颜色来填充

为真彩色图像: 分配颜色

imagecolorallocate(image, red, green, blue)

说明:

image //图像资源

red: //红颜色(0-255) 或 0x(00-ff) //即十六进制来表示 (0xff就是255)

green//绿颜色(0-255)

blue //蓝颜色(0-255)

imagefill和imagecolorallocate的代码演示

在没有给画布填充颜色时的效果

c2560c6ea7e2f2f4f60c38157be36775.png

给画布填充颜色时的效果和代码

结果截图;

23274d3be4d805f1fdfec0ff9e612f04.png

输出图像(以jpeg为例)

输出图像到浏览器

a) header(‘content-type:image/jpeg’); //设置将图像通过浏览来查看

b) imagejpeg(图像资源)

按文件进行输出图像

a) imagejpeg(图像资源,’图像路径’,图像的质量) //质量取值0-100

b) 注意:

f01e8145b55a51b12168d4584cdd2fcc.png

注意:只能jpeg格式才有质量这个参数.

销毁图像

imagedestroy($image); //销毁图像,释放内存资源.

注意: 当前生成几个图像资源,就销毁几个.

验证码的整个代码:

理解代码中的一些函数

加入干扰的点

imagesetpixel(image, x, y, color)

说明:x,y 一个点的坐标

2c0a6b363ddec3c38170d9f8cd6f10b1.png

加入干扰的线

imageline(image, x1, y1, x2, y2, color)

说明: x1,y1是线的一个端点坐标; x2,y2是线的另一个端口的坐标; 由两点画一条线

6348fd3bfa0e9b3a14d6f54b68fe9582.png

让验证码居于图像的正中

imagefontheight(font)获取字体的高度:

imagefontwidth(font)获取字体的宽度:

strlen(字符串)//获取字符串的长度

imagesx(image) //获取画布的宽度

imagesy(image) //获取画布的高度

5e116c83421698d390ef317fb01e073e.png

最后运行结果

0eb00c4dca83a5782f83bcfd5f303516.png

再次完善(和html代码结合起来)

Html代码

a3d09d09bbc599251d0aa6eb28c0ee1c.png

Document请输入信息

姓名:

密码:

555556

验证码

21.php

理解;

9935353076aeb9fbbdc9718bf887406e.png

最后结果截图

27a8f1a3b5bc21b4b329c07b6078073d.png

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值