验证码
验证码原理
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坐标,颜色,字体文件,字符)