直接在代码上:
复制代码代码如下所示:
验证代码
类validatecode {
字符集= 'abcdefghkmnprstuvwxyzabcdefghkmnprstuvwxyz23456789私人美元'; / /随机因素
私有$代码;验证代码
私人codelen美元= 4; / /验证码长度
私有$宽度= 130; /宽度
私有$高度= 50; /高度
私人为IMG; / /句柄图形资源
私有$字体;指定字体
私人字体= 20美元; / /指定字体大小
私人为字体颜色; / /指定字体颜色
要初始化的构造函数
公共功能__construct(){
美元->字体= dirname(__file__。' /字体/大象。TTF '); / /注意字体路径写上,或显示图片
}
随机代码生成
私有函数createCode(){
_len美元= strlen(美元->字符集)- 1;
为($我= 0;icodelen美元美元;i++){
美元->代码=美元->字符集{ mt_rand(0,$ _len)};
}
}
/背景
私有函数createbg(){
美元-> img =新建一个真彩色图像(美元->美元->宽度、高度);
颜色= imagecolorallocate美元(美元-> IMG,mt_rand(157255),mt_rand(157255),mt_rand(157255));
Imagefilledrectangle(美元-> IMG,0美元->美元->高度,宽度,0,美元的颜色);
}
文本/生成
私有函数建立逻辑字体(){
_x美元=美元->宽度/美元-> codelen;
为($我= 0;icodelen美元美元;i++){
美元->字体颜色= imagecolorallocate(美元-> IMG,mt_rand(0156),mt_rand(0156),mt_rand(0156));
imagettftext(美元-> IMG,美元->字体大小,mt_rand(- 30,30),_x美元* $我+ mt_rand(1,5),美元->身高 / 1.4美元->字体颜色,美元->字体,美元->代码{我});
}
}
生成线,雪
私有函数createline(){
行/行
($ i = 0;$ i < 6;$ + +){
颜色= imagecolorallocate美元(美元-> IMG,mt_rand(0156),mt_rand(0156),mt_rand(0156));
imageline(美元-> IMG,mt_rand(0美元->宽度),mt_rand(0美元->高度),mt_rand(0美元->宽度),mt_rand(0美元美元->高度),颜色);
}
/雪
($ i = 0;$ i < 100;$ + +){
颜色= imagecolorallocate美元(美元-> IMG,mt_rand(200255),mt_rand(200255),mt_rand(200255));
imagestring(美元-> IMG,mt_rand(1,5),mt_rand(0美元->宽度),mt_rand(0美元->高度),*,$颜色);
}
}
输出
私有函数输出(){
头('content-type:图像/格式);
imagepng(美元-> IMG);
销毁一图像(美元-> IMG);
}
/外国一代
公共功能doimg(){
美元-> createbg();
美元-> createCode();
美元-> createline();
美元->建立逻辑字体();
$ >输出();
}
获取验证码
公共函数获得按键的ASCII码(){
返回strtolower(美元->代码);
}
}
输出的例子:
使用方法uff1a
1。首先,验证码类保存为一个文件名为ValidateCode.class.php。
2,一个新的文件名为captcha.php来调用类。
captcha.php
复制代码代码如下所示:
session_start();
需要。 / validatecode。类。php; / /第一类包括在内,实际的路径是根据实际情况修改。
_vc美元=新(validatecode); / /实例化一个对象
_vc美元-> doimg();
_session美元{ 'authnum_session} =($ _vc ->获得按键的ASCII码); / /验证码保存到会话
三.参照页面,代码如下所示:
复制代码代码如下所示:
4,完整的验证页面,代码如下:
复制代码代码如下所示:
< PHP
session_start();
在第一页中打开会话,
/ / error_reporting(2047);
session_destroy();
每次删除会话以获取新会话值;
/ /会话效果好,也很方便
>
会话图片验证示例
#登录P {
边距:15px;
行高:20px;
字体大小:14px;
字体粗细:粗体;
}
#登录img {
光标:指针;
}
形式{
左:20px保证金;
}
这是会话示例。
验证码uff1a
< PHP
打印会话;
/ / 最后一次回波:。_session美元{ authnum_session}。;
$;
如果(isset($ _post {验证))){
$validate = $ _post {验证};
回声你刚刚进入的是:。_post美元{验证}。状态:;
如果(验证)!= $ _session {authnum_session )){
使用用户输入验证代码来确定会话值是一致的;
输入错误;
其他{ }
通过验证;
}
}
>
完整演示下载:演示