ThinkPHP框架Verify类验证码开发,以登录表单为例
Think\Verify类可以支持验证码生成和验证功能。
下面是最简单的验证码生成方式:
$Verify = new \Think\Verify(); $Verify->entry();
上面的代码创建了一个默认的验证码图片并打印出来,如下图:
生成的验证码信息存储在session中,附带信息为:
array('verify_code'=>'当前验证码的值','verify_time'=>'验证码生成的时间戳')
如果需要在一页上生成多个验证码,则输入法必须传达可识别信息。
验证码参数
您可以为生成的验证码设置必要的参数,以达到不同的显示效果。这些参数是:
参数 | 说明 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
过期 | 验证码有效时间(秒) | ||||||||||||||||||
图片为默认值 useImgBg
默认参数设置: 参数设置有两种方式。 实例化传入参数: 或者使用动态设置,如: 验证码字体默认随机使用验证码字体 In/Thin/Think Library verify/ttfs/ 中的 Thin/Think 字体文件目录下,我们可以设置验证码字体,例如: $Verify = new \Think\Verify(); // 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/$Verify->fontttf = ''; $Verify->entry(); 壁纸支持验证码壁纸功能,可以设置如下: $Verify = new \Think\Verify(); // 开启验证码背景图片功能 随机使用 ThinkPHP/Library/Think/Verify/bgs 目录下面的图片$Verify->useImgBg = true; $Verify->entry(); 中文验证码如果你想使用中文验证码,可以设置: $Verify = new \Think\Verify(); // 验证码字体使用 ThinkPHP/Library/Think/Verify/zhttfs/$Verify->useZh = true; $Verify->entry(); 显示效果如图: 如果没有正常显示,请确保没有正常显示。你的ThinkPHP/Library/Think/Verify/zhttfs/目录下有中文字体文件。 如果ThinkPHP/Library/Think/Verify/zhttfs/文件夹中没有中文字体文件,可以从C:\Windows\Fonts\下载或复制中文字体文件。请注意,字体文件扩展名为 .ttf。 验证码的识别通过Think\Verify类的 // 检测输入的验证码是否正确,$code为用户输入的验证码字符串function check_verify($code, $id = ''){ $verify = new \Think\Verify(); return$verify->check($code, $id); } 练习: 登录示例: 控制器方法: <?php namespace Home\Controller; use Think\Controller; class LoginController extends Controller { function Login() { if(empty($_POST)) { $this->display(); } else { $code = $_POST["yzm"]; $verify = new \Think\Verify(); if($verify->check($code,2)) //code是用户输入的值 ,2是验证码检测标示,必须与生成的验证码标示相同才能验证 { if($_POST["uid"]!="" && $_POST["pwd"]!="") { $model = D("Users"); $uid = $_POST["uid"]; $pwd = $_POST["pwd"]; $attr = $model->field("Pwd")->find($uid); //var_dump($attr);if($pwd==$attr["pwd"]) { session("uid",$uid); // 跳转页面之前将$uid存入session $this->success("登录成功!","Main"); } else { $this->error("登录失败!"); } } else { $this->error("用户名或者密码不能为空!"); } } else { $this->error("验证码不正确!"); } } } //生成验证码的操作方法function yzm() { $config = array( 'fontSize' => 30, // 验证码字体大小 'length' => 4, // 验证码位数 'useCurve' => true, // 是否画混淆曲线 'useNoise' => true, // 关闭验证码杂点 'expire' => 60, // 验证码有效期(秒) 'useImgBg' => false, // 使用背景图片 'useZh' => true, // 使用中文验证码 'imageW' => 240, // 验证码宽度 'imageH' => 60, // 验证码高度 'fontttf' => '', // 验证码字体 ); $Verify = new \Think\Verify($config); $Verify->entry(2);//参数是生成验证码的标示,适用于同一个页面有多个验证码的时候,生成验证码的标示必须与检测验证码的标示相同,否则验证码不正确 } ?> 请求登录方法: |
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。