四时宝库

程序员的知识宝库

PHP验证码原理及代码实现例子(php 短信验证码)

验证码

验证码原理

Captcha:Completely Automated Public Turing Test to Tell Computers and Humans Apart (全自动区分计算机和人类的图灵测试)

验证码的意义:防止网站被别人恶意攻击

原理:人能够从图片中识别图片里面的内容,而电脑做不到。

验证码:将一系列随机产生的字符写入到对应的图片当中,然后将图片发送给浏览器,然后用户通过输入图片上的随机字符,最后发送给服务器进行比对。

图片处理

PHP本身不具备图片处理能力,但是可以通过扩展GD扩展来实现对图片的处理。

加载GD扩展:在安装ecshop的时候已经加载了GD扩展

1.找打破php.ini中的gd2.dll扩展,并去掉分号

2.重启Apache即可

3.查看gd扩展

php操作gd库

gd库如何实现以上流程?

1. 准备画布

resource imagecreatetruecolor(宽,高):创建一张真彩图片画布

2 画内容:往图片上写入文字(字符)

bool imagestring(资源,字体(大小),x坐标,y坐标,目标字符串,颜色)

在操作图片的过程中,如果要给某个内容上色,必须要先保证已经给当前图片分配好该颜色。

int imagecolorallocate(资源,红,绿,蓝);

3. 保存图片

imagepng(资源,路径):

1. 如果没有第二个参数,表示输出图片

2. 如果有第二个参数,表示保存图片

a) 输出图片:声明输出的类型

b) 将图片资源里的内容取出来当做图片输出

制作验证码图片

需求:

1. 图片的宽为200,高为50

2. 图片的背景颜色能够随机改变

填充背景色

imagefill(资源,x坐标,y坐标,颜色)

3. 字符串也是随机得到(字体颜色也是随机)

中文验证码

中文验证码跟普通字母验证码的唯一区别就是因为字符集的区别。

使用imagestring来写中文的话,出现的是乱码。

将中文写入到图片需要使用imagettftext函数

imagettftext(资源,字体大小,旋转角度,x坐标,y坐标,颜色,字体文件,字符)

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接