首先,在项目目录下创建Class文件夹,用于存储个人类文件。

之后建立Data目录存放所需字体文件,其他的数据也可以放在这个文件夹下。

然后再Conf文件夹下创建verify.php配置文件。

在config.php文件中引用verify.php配置文件。

代码入下:

//加载验证码配置
    'LOAD_EXT_CONFIG' => 'verify',

要使用Class文件夹下的类,要这么引用:

//引入自定义验证码类
        import('Class.ValidateCode', APP_PATH);
        ValidateCode::doVerify();

效果:

使用的验证码类,以及配置文件:

配置文件:

<?php
return array(
//验证配置
'charset' => 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789',//随机因子
'codelen' => 4, //验证码长度
'width' => 130, //宽度
'height' => 50, //高度
'font' => './App/Data/QDB.otf', //指定的字体
'fontsize' => 30, //指定字体大小
'verifyName' => 'verify', //session中验证码键值
);

验证码类:

<?php
//验证码类
class ValidateCode { /**
* 生成验证码
* @return [type] [description]
*/
static function doVerify() {
//属性
$img;
$charset = C('charset');//随机因子
$codelen = C('codelen');//验证码长度
$width = C('width');//宽度
$height = C('height');//高度
$font = C('font');//指定的字体
$fontsize = C('fontsize');//指定字体大小
$verifyName = C('verifyName');//session中验证码键值 //生成随机码
$_len = strlen($charset)-1;
for ($i=0;$i<$codelen;$i++) {
$code .= $charset[mt_rand(0,$_len)];
} //生成背景
$img = imagecreatetruecolor($width, $height);
$color = imagecolorallocate($img, mt_rand(157,255), mt_rand(157,255), mt_rand(157,255));
imagefilledrectangle($img,0,$height,$width,0,$color); //生成文字
$_x = $width / $codelen;
for ($i=0;$i<$codelen;$i++) {
$fontcolor = imagecolorallocate($img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
imagettftext($img,$fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$height / 1.4,$fontcolor,$font,$code[$i]);
} //生成线条、雪花
//线条
for ($i=0;$i<6;$i++) {
$linecolor = imagecolorallocate($img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
imageline($img,mt_rand(0,$width),mt_rand(0,$height),mt_rand(0,$width),mt_rand(0,$height),$linecolor);
}
//雪花
for ($i=0;$i<30;$i++) {
$snowcolor = imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
imagestring($img,mt_rand(1,5),mt_rand(0,$width),mt_rand(0,$height),'.',$snowcolor);
} //创建session
//生成小写验证码进行md5加密,并存于session
$_SESSION[$verifyName] = md5(strtolower($code)); //输出
header('Content-type:image/png');
imagepng($img);
imagedestroy($img);
}
}

ThinkPHP - 扩展个人类库 - 以验证码类为例子的更多相关文章

  1. Yii 1.1.17 四、属性标签、AR类增删改查、使用上传类与扩展第三方类库

    一.属性标签与规则设置 当进入网站页面,将会读数据库返回信息到视图上.那么,现在定义模型中的属性在视图标签上的显示, 也就是模型属性到前台标签的映射 // 定义模型属性到前台标签的映射 public ...

  2. THINKPHP源码学习--------验证码类

    TP3.2验证码类的理解 今天在学习中用到了THINKPHP验证码,为了了解究竟,就开始阅读TP验证码的源码. 源码位置:./ThinkPHP/Library/Think/Verify.class.p ...

  3. ThinkPHP 3.2.3 加减乘法验证码类

    ThinkPHP 3.2.3 自带的验证码类位于 /ThinkPHP/Library/Think/Verify.class.php,字体文件位于 /ThinkPHP/Library/Think/Ver ...

  4. ThinkPHP验证码类

    //ThinkPHP验证码类使用$config = array( 'fontSize' => 30, // 验证码字体大小 'length' => 3, // 验证码位数 'useNois ...

  5. 修改ThinkPHP的验证码类

    今天用ThinkPHP重新开发一个系统,用到了ThinkPHP的验证码类,由于我希望验证码别太复杂,希望验证码里边只有数字,却发现该Verify类并未提供设置验证码中使用的字符的配置的方法,于是查看源 ...

  6. 【个人使用.Net类库】(4)验证码类

    验证码是现在管理系统常用的一种保护用户帐户信息的一种功能. 验证码可以有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,虽然这可能是我们登录麻烦一点,但是对用户的密码安全来 ...

  7. ThinkPHP验证码类的使用

    1.创建一个方法并引入验证码类class ShowAction extends Action{//用户评论验证码public function verify(){import('ORG.Util.Im ...

  8. CI框架中,扩展验证码类。

    使用CI框架的朋友,应该都知道CI框架的的验证码辅助函数,不太好用.它需要写入到数据库中,然后再进行比对. 大家在实际项目中,好像不会这样去使用,因为会对数据库造成一定的压力. 所以,我们还是利用se ...

  9. thinkphp中的类库与引用import引入机制

    ThinkPHP的类库包括基类库和应用类库 控制器类 模块名+Action 例如 UserAction.InfoAction 模型类 模型名+Model 例如 UserModel.InfoModel ...

随机推荐

  1. CSS复习第一天(简单规范)

    1.有意义的html     优点:与表现性的页面相比,有意义的页面更容易后期的处理与维护.                便于浏览器与屏幕阅读器识别.                更加便于调试样式 ...

  2. 6.PHP 教程_PHP数据类型

    PHP数据类型 String(字符串),Integer(整型),Float(浮点型),Boolean(布尔型),Array(数组),Object(对象), NULL(空值). PHP字符串 一个字符串 ...

  3. 深入剖析哪些服务是Oracle 11g必须开启的

    这篇文章主要介绍了哪些服务是Oracle 11g必须开启的以及这些服务的详细介绍,需要的朋友可以参考下   成功安装Oracle 11g数据库后,你会发现自己电脑运行速度会变慢,配置较低的电脑甚至出现 ...

  4. (图文教程)帝国cms7.0列表页模板调用多说评论次数

    多说是站长朋友们常用的一款社会化评论插件.这里为大家介绍一下帝国列表页调用多说评论次数的方法. 文章由谢寒执笔.博客地址:www.cnblogs.com/officexie/: 1.首先在内容页模板中 ...

  5. 想精度高,可以考虑用c语言中的函数gettimeofday

    大家好: 在 win32 + bcb 时, 有个 GetTickCount() 返回第统启动到现在的 tick, 单位 ms.请问在 Linux + qt5 怎样实现呢? 如果用 QDateTime ...

  6. linux网络相关命令使用

    A,iptables使用示例 1,将请求80端口的包发送给本机8180端口(这样,别的机器访问本机的80端口时会被转发到8180端口去) iptables -t nat -A PREROUTING - ...

  7. Clojure绘制UML

    简单介绍 使用Clojure封装了Graphviz的使用.眼下主要实现了UML的绘制 使用 以命令模式的UML为例,演示cdraw的使用 安装Graphviz cdraw是对Graphviz的简单封装 ...

  8. NeHe OpenGL lession 4

    // lession4.c #include <OpenGL/OpenGL.h> #include <GLUT/GLUT.h> #include <stdio.h> ...

  9. 人类科技的发展为什么会是加速度的(TRIZ方法再推荐)

    从人类的历史发展来看,近200年来的科技发展的成果超过了过去几千年中科技发展的成果,并且从短时间来看.这样的加速趋势也是很明显的,想想十年前和如今的对照,科技的发展确实是日新月异. 科技的发展固然有偶 ...

  10. Android GPS应用:动态获取位置信息

    在上文中,介绍了GPS概念及Android开发GPS应用涉及到的常用类和方法.在本文中,开发一个小应用,实时获取定位信息,包括用户所在的纬度.经度.高度.方向.移动速度等.代码如下: Activity ...