ThinkPHP中的功能类——验证码类
程序员文章站
2024-01-24 19:58:40
...
验证码类
验证码:captcha(全自动识别机器与人类的图灵测试)。常见验证码可以分为三种:页面上的图片形式、短信验证码、语音验证码。
在ThinkPHP中,为了提高开发效率,系统封装了一个验证码类:Verify.class.php
关于ThinkPHP中的验证码底层代码的介绍:
具体实现代码的位置路径:
方法:
构造方法:在实例化的时候可以传递一个数组,用于和其成员属性config进行合并,生成新的配置
public function __construct($config=array()){
$this->config = array_merge($this->config, $config);
}
Check方法:校验验证码,传递参数,用户输入的验证码
public function check($code, $id = '') {
$key = $this->authcode($this->seKey).$id;
// 验证码不能为空
$secode = session($key);
if(empty($code) || empty($secode)) {
return false;
}
// session 过期
if(NOW_TIME - $secode['verify_time'] > $this->expire) {
session($key, null);
return false;
}
if($this->authcode(strtoupper($code)) == $secode['verify_code']) {
$this->reset && session($key, null);
return true;
}
return false;
}
Entry方法:输出图片,保存验证码到session中
生成常规验证码:
常规验证码是指有数字+大小写字母组成的验证码。
步骤:
第一步:实例化验证码类;
第二步:输出图片;
代码:
//生成常规验证码
public function test(){
//配置
$cfg = array(
'fontSize' => 20, // 验证码字体大小(px)
'useCurve' => false, // 是否画混淆曲线
'useNoise' => false, // 是否添加杂点
'length' => 4, // 验证码位数
'fontttf' => '4.ttf', // 验证码字体,不设置随机获取
);
//实例化验证码类
$Verify = new \Think\Verify($cfg);
//输出验证码
$Verify -> entry();
}
输出结果:
生成中文验证码:
需要字体文件,字体文件可以在自己的计算机中找到:
打开系统设置搜索“字体”,然后搜索黑体:
复制到zhttfs目录中
代码:
//生成中文验证码
public function test(){
//配置
$cfg = array(
'useZh' => true, // 使用中文验证码
'fontSize' => 20, // 验证码字体大小(px)
'useCurve' => false, // 是否画混淆曲线
'useNoise' => false, // 是否添加杂点
'length' => 4, // 验证码位数
);
//实例化验证码类
$Verify = new \Think\Verify($cfg);
//输出验证码
$Verify -> entry();
}
效果展示:
补充说明
关于中文验证码的几点说明:
第一:以后在实际开发的时候不到万不得已不要使用中文验证码;
第二:中文验证码需要中文字体的支持,中文字体可以在自己计算机中找到,当也可以去字体网站下载(比如说站长之家chinaz.com);
第三:使用中文验证码必须开启php的扩展mbstring。