ThinkPHP - 扩展个人类库 - 以验证码类为例子
首先,在项目目录下创建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 - 扩展个人类库 - 以验证码类为例子的更多相关文章
- Yii 1.1.17 四、属性标签、AR类增删改查、使用上传类与扩展第三方类库
一.属性标签与规则设置 当进入网站页面,将会读数据库返回信息到视图上.那么,现在定义模型中的属性在视图标签上的显示, 也就是模型属性到前台标签的映射 // 定义模型属性到前台标签的映射 public ...
- THINKPHP源码学习--------验证码类
TP3.2验证码类的理解 今天在学习中用到了THINKPHP验证码,为了了解究竟,就开始阅读TP验证码的源码. 源码位置:./ThinkPHP/Library/Think/Verify.class.p ...
- ThinkPHP 3.2.3 加减乘法验证码类
ThinkPHP 3.2.3 自带的验证码类位于 /ThinkPHP/Library/Think/Verify.class.php,字体文件位于 /ThinkPHP/Library/Think/Ver ...
- ThinkPHP验证码类
//ThinkPHP验证码类使用$config = array( 'fontSize' => 30, // 验证码字体大小 'length' => 3, // 验证码位数 'useNois ...
- 修改ThinkPHP的验证码类
今天用ThinkPHP重新开发一个系统,用到了ThinkPHP的验证码类,由于我希望验证码别太复杂,希望验证码里边只有数字,却发现该Verify类并未提供设置验证码中使用的字符的配置的方法,于是查看源 ...
- 【个人使用.Net类库】(4)验证码类
验证码是现在管理系统常用的一种保护用户帐户信息的一种功能. 验证码可以有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,虽然这可能是我们登录麻烦一点,但是对用户的密码安全来 ...
- ThinkPHP验证码类的使用
1.创建一个方法并引入验证码类class ShowAction extends Action{//用户评论验证码public function verify(){import('ORG.Util.Im ...
- CI框架中,扩展验证码类。
使用CI框架的朋友,应该都知道CI框架的的验证码辅助函数,不太好用.它需要写入到数据库中,然后再进行比对. 大家在实际项目中,好像不会这样去使用,因为会对数据库造成一定的压力. 所以,我们还是利用se ...
- thinkphp中的类库与引用import引入机制
ThinkPHP的类库包括基类库和应用类库 控制器类 模块名+Action 例如 UserAction.InfoAction 模型类 模型名+Model 例如 UserModel.InfoModel ...
随机推荐
- Eclipse4.3正式版已发布
Eclipse4.3正式版已发布,传送门http://www.eclipse.org/downloads/
- PHP将Excel导入数据库以及数据库数据导出至Excel
一.导入 导入需要使用能读取Excel的组件,网上也有比较好的组件,这里分享我使用的:下载 提取码:vxyn.(注意两个文件有引用关系) <?php //传入要导入的Excel的文件名 fun ...
- 找到了解决Elite多媒体键失效的问题
首先抛弃itouch这个东西,google了一下,官方没有解决方案. 其次就是找第三方软件把这些快捷键重新定义,同样google了一下,发现了一个叫做hot keyboard的东西,试验了一下,可以识 ...
- c++builder 重载WindowProc、WndProc 截获消息(比Delphi多一个Message Map方法)
c++builder 重载WindowProc.WndProc 截获消息 方法一WindowProc void __fastcall myWindowProc(Messages::TMessage ...
- 关于Qt信号与槽机制的传递方向性研究(结论其实是错误的,但是可以看看分析过程)
最近由于项目的需求,一直在研究Qt.信号与槽机制是Qt的一大特色,该机制允许两者间传递参数,依次来实现对象间的通信.这个参数会分别存在于信号的参数列表和槽函数的参数列表中.需要注意的是,若将槽函数绑定 ...
- qt 国际化(翻译时会触发changeEvent)
1. 修改工程文件 .pro ,加入翻译源文件 hello_world.ts: TRANSLATIONS += \ Resource/translations/hello_world.t ...
- Json.Net系列教程 2.Net类型与JSON的映射关系
原文 Json.Net系列教程 2.Net类型与JSON的映射关系 首先谢谢大家的支持和关注.本章主要介绍.Net类型与JSON是如何映射的.我们知道JSON中类型基本上有三种:值类型,数组和对象.而 ...
- HDU 2451 Simple Addition Expression
题目大意:有一个关于 简单加法表达式 的定义告诉你,就是 选一个数字i 如果 i+(i+1)+(i+2) 它的和,没有任何一位进位的话,那就是 一个i的简单加法表达式,求小于n的表达式数目. 题 ...
- leetCode解题报告5道题(六)
题目一: Longest Substring Without Repeating Characters Given a string, find the length of the longest s ...
- Register/unregister a dll to GAC
gacutil /i "C:\Test.dll"gacutil /u "Test"