一个经典的PHP验证代码类共享

一个经典的PHP验证代码类共享
我们设计了一个代码类VCODE通过PHP的GD库图像处理的内容,这类文件中的vcode.class.php宣布,和一些实现细节都封装在类中通过面向对象的特征。只要我们创建对象,我们提供了用于构建方法的三个参数,包括创建验证码宽度和高度,以及验证码字母的数量,我们可以创建成功的验证码类的一个对象,这个类的声明代码如下:

< PHP
类VcoDE {
私有$宽度;
私人$高度;
私有$
私有$代码;验证代码
私人为IMG; / /图像资源

三种参数的构造方法
功能__construct($宽度= 80美元= 20美元,高度,num = 4){
$ >宽度=宽度;
$ =高度=高度;
$;
美元->代码=(美元-> createcode); / /调用你自己的方法
}

获取服务器中存储的字符代码,用于
功能获得按键的ASCII码(){
返回$ >代码;
}

输出图像
功能outimg(){
创建背景(颜色、大小、边框)
美元-> createback();

设置(大小,字体颜色)
美元-> outstring();

干扰元素(点、线)

美元-> setdisturbcolor();
输出图像
美元-> printimg();
}

创建背景
私有函数createback(){
创建资源
美元-> img =新建一个真彩色图像(美元->美元->宽度、高度);
设置随机的背景色
背景颜色= imagecolorallocate美元(美元-> IMG,兰德(225, 255)、(225, 255)、兰特兰特(225, 255));
设置背景填充
imagefill(美元-> IMG,0, 0,$ bgcolor);
绘制框
美元($这imagecolorallocate BorderColor = -> IMG,0, 0, 0);

Imagerectangle(美元-> IMG,0, 0美元-> width-1,美元-> height-1,$ 4 No);
}
私有函数outstring(){
对(我= 0美元美元美元;微粒;i++){

颜色= imagecolorallocate美元(美元-> IMG,兰德(0, 128),伦德(0, 128),伦德(0, 128));

$字体=兰特(3,5); / /字体大小

$ x = 3 +(此宽度为$ $)。
Y元=兰特(0,取得字体高度($字体)- 3);

绘制每个字符
imagechar(美元-> IMG,字体美元,$ X,Y元,美元->代码{我},合色);
}
}

干扰元素集
私有函数setdisturbcolor(){
添加点
($ i = 0;$ i < 100;$ + +){
颜色= imagecolorallocate美元(美元-> IMG,兰德(0, 255),伦德(0, 255),伦德(0, 255));
imagesetpixel(美元-> IMG,兰特(1美元->宽度2),伦德(1,美元->身高-2),为彩色);
}

/ +行
($ i = 0;$ i < 10;$ + +){
颜色= imagecolorallocate美元(美元-> IMG,兰德(0, 255),伦德(0, 128),伦德(0, 255));
imagearc(美元-> IMG,伦德(10,美元->宽度+ 10),伦德(10,美元->高度+ 10),伦德(30, 300),伦德(30, 300),美元55,44,颜色);
}
}

输出图像
私有函数printimg(){
如果(imagetypes img_gif()){
页眉(内容类型:图像);
imagegif(美元-> IMG);
} elseif(function_exists(imagejpeg )){
页眉(内容类型:图像);
imagegif(美元-> IMG);
} elseif(imagetypes img_png()){
页眉(内容类型:图像);
imagegif(美元-> IMG);
{人}
在这个php服务器中没有图像支持
}

}

生成的验证代码字符串
私有函数createcode(){
$码=3456789abcdefghijkmnpqrstuvwxyabcdefghijklmnpqrstuvwxy ;

= $代码;

对于($ i = 0;$ i数字;$ + +){
美元美元的代码。=代码{兰特(0,strlen($码)- 1)};
}

返回$代码;
}

用于图像资源的自动销毁
功能__destruct(){
销毁一图像(美元-> IMG);
}

}
上面的脚本,虽然VcoDE代码较多,细节都封装在类。只要对象是直接输出,可以输出图片到客户端浏览器,可以在浏览器的形式。此外,这类自动获取字符串中的验证码图片,这有利于在服务的_session美元{代码}当表单被提交。,只有用户输入显示在窗体中的验证码图片的文字是完全一样的保留在服务器代码字符串,所以形式可以提交成功。(注:验证码是在服务器端_session美元{代码},所以会话的会话必须打开使用这个类,)

在下面的脚本code.php,使用session_start()打开用户会话的控制,又包括VCODE的vcode.class.php,创建类对象,直接输出,随机生成验证码图片可以发送出去,而验证码字符串自动保存在服务器的一部分。代码如下所示:
< PHP
打开会话
session_start();
包括VCODE。类。PHP ;
构建方法
为VcoDE =新VCODE(80, 30, 4);
服务器上的验证代码/保存您自己的空间的副本
_session美元{ 'code} = $ VCODE ->获得按键的ASCII码();
代码图像输出
为VcoDE -> outimg();
>
窗体代码如下所示:
< PHP
session_start();
如果(isset($ _post { 'dosubmit ' })){
如果(strtoupper($ _session { 'code ' })= strtoupper($ _post { 'code ' })){
输入成功!;
其他{ }
正确的输入;
}
}
>
用户名:
密码:
代码:

php经典验证类下载代码:

php验证码类
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部