本文为大家分享了服务器端编程语言(专业超文本预处理器的缩写)生成图片验证码的方法,供大家参考,具体内容如下
首先从指定字符集合中随机抽取固定数目的字符,以一种不规则的方法画在画布上,再适当添加一些干扰点和干扰元素,最后将图片输出,一张崭新的验证码就完成了。
前端代码如下:
!DOCTYPE html html head meta http-equiv=' content-type ' content=' text/html;字符集=utf-8 '标题这是一个测试!/title link rel='样式表type=' text/CSS ' href=' CSS/bootstrap。量滴CSS '/头体表单名称='form '输入类型=“文本”占位符='账号/br/输入类型='密码'占位符='密码/br/输入类型=“文本”占位符='验证码/img id=' verImg ' src=' http : libs/verification。PHP '/a href=' # ' class=' change ' onclick=' changeVer()'点击刷新/abr/输入类型='提交'值='登录//表单脚本类型='text/javascript' //刷新验证码函数changeVer(){ document。getelementbyid(' verImg ').src=' http : libs/verification。PHP?tmp='数学。random();}/脚本/正文/htmlphp脚本文件验证码的代码如下:
?PHP session _ start();//开启会议记录验证码数据vCode(4,15);//设置验证码的字符个数和图片基础宽度//vCode字符数目,字体大小,图片宽度、高度函数vCode($num=4,$size=20,$width=0,$height=0) {!$ width $ width=$ num * $ size * 4/5 15;$ height $ height=$ size 10//设置验证码字符集合$ str=' 23456789 abcdefghijkmnpqrstuvwxyzabbdefghijklmnpqrstuvw ';//保存获取的验证码$ code=//随机选取字符对于($ I=0;$ i $ num$i ) { $code .=$str[mt_rand(0,strlen($ str)-1)];} //创建验证码画布$ im=imagecreatetrue color($ width,$ height);//背景色$ back _ color=image color allocate($ im,mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));//文本色$ text _ color=imagecolorable($ im,mt_rand(100,255),mt_rand(100,255),mt_rand(100,255));imagefiledrectangle($ im,0,0,$width,$height,$ back _ color);//画干扰线对于($ I=0;$ I 5;$ I){ $ font _ color=image color allocate($ im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));imagearc($im,mt_rand(- $width,$width),mt_rand(- $height,$height),mt_rand(30,$width * 2),mt_rand(20,$height * 2),mt_rand(0,360),mt_rand(0,360),$ font _ color);} //画干扰点对于($ I=0;$ I 50 $ I){ $ font _ color=image color allocate($ im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));imagesetpixel($im,mt_rand(0,$width),mt_rand(0,$height),$ font _ color);} //随机旋转角度数组$array=array(5,4,3,2,1,0,-1,-2,-3,-4,-5);//输出验证码//imagefttext(图像、大小、角度、x、y、颜色、字体文件、文本)@imagefttext($im、$size、$ array _ rand($ array)、$ 12、$size、$text_color、' c : WINDOWs Fonts simsun。TTC ',$ code);$ _ SESSION[' verifYCOde ']=$ COde;//无缓存在每次请求时都会访问服务器//最大年龄在请求1s后再次请求会再次访问服务器,必须重新验证则第一发送请求会访问服务器,之后不会再访问服务器//标头(' Cache-Control:最大年龄=1,s-最大年龄=1,无缓存,必须重新验证');标头(“缓存控制:无缓存”);标题('内容类型:图像/png;charset=GB 2312’);//将图片转化为巴布亚新几内亚格式图像png($ im);图像销毁($ im);}?效果图:
以上就是本文的全部内容,希望对大家学习服务器端编程语言(专业超文本预处理器的缩写)程序设计有所帮助,大家学会编写服务器端编程语言(专业超文本预处理器的缩写)图片验证码