PHP实现的封装验证码类详细解决方案
课程名称:validationcode.class.php
代码如下:
复制代码代码如下所示:
< PHP
类validationcode {
私人宽度;
私人身高;
画布的大小;
私有$图像;
私人disturbcolornum美元;
私人$码;
功能__construct($宽度= 80美元= 20美元,高度,大小= 4){
$ >宽度=宽度;
$ =高度=高度;
美元->大小= $大小;
美元->码=美元-> createCheckCode();
美元=楼层(宽*高/ 15);
如果($数>240 - $ codeNum){
美元-> disturbcolornum = 240 - $大小;
其他{ }
美元-> disturbcolornum = $号;
}
}
通过这种方法访问/输出图像浏览器。
功能秀-视觉($ fontface = ){
第一步:创建背景图像
美元-> createimage();
第二步:设置/干扰元素
美元-> setdisturbcolor();
第三步:对图像随机绘制文本
美元-> outputText($ fontface);
第四步:输出图像
美元->效果();
}
通过调用方法获得随机创建的验证代码字符串
功能getcheckcode(){
返回这个->码;
}
私有函数createimage(){
创建图像资源
美元->新建一个真彩色图像(图像=美元->美元->宽度、高度);
随机背景色
BackColor = imagecolorallocate美元(美元->图像,兰德(225, 255),伦德(225255),和(225, 255));
提姆填充颜色背景
imagefill(美元0, 0美元->图像,背景色);
设置边框颜色
边境= imagecolorallocate(美元美元->图像,0, 0, 0);
绘制矩形
Imagerectangle(美元->图像,0, 0美元-> width-1,美元->美元height-1,边境);
}
私有函数setdisturbcolor(){
为($我= 0;idisturbcolornum美元美元;i++){
颜色= imagecolorallocate美元(美元->图像,兰德(0, 255),伦德(0, 255),伦德(0, 255));
imagesetpixel(美元->图像,兰特(1美元->宽度2),伦德(1,美元->身高-2),为彩色);
}
($ i = 0;$ i < 10;$ + +){
颜色= imagecolorallocate美元(美元->图像,兰德(200, 255)、(200, 255)、兰特兰特(200, 255));
imagearc(美元->图像,伦德(10,美元->宽度)、伦德(10美元->高度),伦德(30, 300),伦德(20, 200),55, 44美元的颜色);
}
}
私有函数createCheckCode(){
这里主要来自2随机代码的开头,以区分1和l。
为代码=23456789abcdefghijkmnpqrstuvwxyzabcdefghijkmnpqrstuvwxyz ;
$=;
对(我= 0美元美元美元的大小;我;i++){
$字符= $代码{兰特(0,strlen($代码)- 1)};
$字符串= $ char;
}
返回$字符串;
}
私有函数outputText($ fontface = ){
为($我= 0;icodenum美元美元;i++){
字体颜色= imagecolorallocate美元(美元->图像,兰德(0, 128),伦德(0, 128),伦德(0, 128));
如果($ fontface = =){
$字体=兰特(3, 5);
X元=地板(宽度/美元->美元-> codeNum)*我+ 3美元;
Y元=兰特(0美元->平台高:15);
imagechar(美元->图像、字体美元,$ X,Y元,美元->码{我},为字体颜色);
其他{ }
$字体=兰特(12, 16);
X元=地板((($这-> width-8)/美元-> codeNum)*我+ 8美元;
Y元=兰特(合字体+ 5,美元->高度);
imagettftext(美元->图像、字体美元,伦德(30, 30美元),X、Y元,美元美元的字体颜色,fontface,美元->码{我});
}
}
}
私有函数效果(){
如果(imagetypes img_gif()){
页眉(内容类型:图像);
imagepng(美元->图像);
} else if(imagetypes img_jpg()){
页眉(内容类型:图像);
imagepng(美元->图像);
} else if(imagetypes img_png()){
页眉(内容类型:图像);
imagepng(美元->图像);
} else if(imagetypes img_wbmp()){
标题(内容类型:图像/越南盾。WAP。WBMP );
imagepng(美元->图像);
其他{ }
死亡(PHP不支持图像创建);
}
}
功能__destruct(){
销毁一图像(美元->图像);
}
}
使用如下:
测试,调用验证代码类
code.php
复制代码代码如下所示:
< PHP
session_start();
包括validationcode。类。PHP ;
为代码=新validationcode(80, 20, 4);
($代码->秀-视觉); / /输出为注册或登录页面
_session { } =美元美元代码-> getcheckcode(代码); / /保存到服务器的验证码