个人编写的php验证码生成类共享

这个验证码可以直接使用,可以作为参考。

类的成员codestr是生成的验证码字符串:


< PHP

*验证码
* /
类代码{

有/宽和高,长度,类型,画布,绘画类型1。每个成员的定义

私有$宽度;
私有$高度;
私有$
私人imgtype美元; / /图像类型
私人$型; / / 1,2,3三选项字符串类型1纯数字2纯小写字母数字混合3敏感
私有$
公共codestr美元; / /代码串

公共功能__construct($高度= 20美元= 4美元,数量,imgtype =JPEG
$ >宽度= $ * 20;
$ =高度=高度;
$;
美元-> imgtype = $ imgtype;
$;
这codestr =美元->美元-> codestr();
美元->组合();
}

2。定义随机访问字符串函数
私有函数codestr(){
开关($ - type){

案例1:1型1-9随机数
$str =崩溃(
打破;
案例2: / / 2型到随机存取小写字母
$str =崩溃(
打破;
案例3:3种访问数字、小写字母、大写字母混合的类型
对(我= 0美元美元美元;微粒;i++){
$ M =兰特(0,2);
开关($ m){
案例0:
$ O =兰特(48,57);
打破;
案例1:
$ O =兰特(65,90);
打破;
案例2:
$ =兰特(97122);
打破;
}
$str = sprintf(%,$ O);
}
打破;
}


返回$ STR;
}


三.初始化画布映像资源
私有函数Hb(){
美元-> HB =新建一个真彩色图像(美元->美元->宽度、高度);
}

4。背景色
私有函数BG(){
返回imagecolorallocate(美元-> HB、伦德(130250),伦德(130250),伦德(130250));
}

5。生成的字体颜色
私有函数字体(){
返回imagecolorallocate(美元-> HB,兰德(0100)、(0100)、兰特兰特(0100));
}

6。填充背景色
私有函数BgColor(){
Imagefilledrectangle(美元-> HB,0,0,美元->美元->宽度,高度,美元-> BG());
}

7。 /干扰
私有函数Ganrao(){
美元=地板(($ -宽度)* *($ >高度) / 3);
($ i = 0;$ i $总和;$ + +){
imagesetpixel(美元-> HB,兰特(0美元->宽度),伦德(0,美元->高度),美元-> BG());
}
}

8。随机线性曲线
私有函数户县(){
对(我= 0美元美元美元;微粒;i++){
imagearc(美元-> HB,兰特(0美元->宽度),伦德(0,美元->高度),伦德(0,美元->宽度),伦德(0,美元->高度),兰德(0360),和(0360),));
}
}

9。/办公室
私有函数Xiezi(){
对(我= 0美元美元美元;微粒;i++){
X元=细胞(美元->宽度/美元-> num)* $我;
Y元=兰特(1美元->平台高:15);
imagechar(美元-> HB,5,X元+ 4,Y元,美元-> codestr {我},美元->字体());
}
}

10。 /输出
私有函数outimg(){
美元=图像书橱。美元-> imgtype;
$标题=内容类型:图像 / 。美元-> imgtype;
如果(function_exists($书橱)){
页眉($页眉);
美元($这书橱-> HB);
其他{ }
退出(GD库没有这样的图像);
}
}

11。装配
私有函数组合(){
$ > Hb();
美元->背景颜色();
美元-> ganrao();
户县();
美元->蝎子();
美元-> outimg();
}

公共功能getcodestr(){
返回codestr美元->;
}
}
>