下面由thinkphp教程栏目给大家介绍thinkphp框架之验证码 ,希望对需要的朋友有所帮助!
think\\\\verify类可以支持验证码的生成和验证功能。
下面是最简单的方式生成验证码:
$verify = new \\\\think\\\\verify();$verify->entry();上面的代码会生成默认的验证码图片并输出,显示如下:
生成的验证码信息会保存到session中,包含的数据有:
array('verify_code'=>'当前验证码的值','verify_time'=>'验证码生成的时间戳')如果你需要在一个页面中生成多个验证码的话,entry方法需要传入可标识的信息。
验证码参数
可以对生成的验证码设置相关的参数,以达到不同的显示效果。这些参数包括:
参数描述expire验证码的有效期(秒)useimgbg是否使用背景图片 默认为falsefontsize验证码字体大小(像素) 默认为25usecurve是否使用混淆曲线 默认为trueusenoise是否添加杂点 默认为trueimagew验证码宽度 设置为0为自动计算imageh验证码高度 设置为0为自动计算length验证码位数fontttf指定验证码字体 默认为随机获取usezh是否使用中文验证码bg验证码背景颜色 rgb数组设置,例如 array(243, 251, 254)sekey验证码的加密密钥codeset验证码字符集合 3.2.1 新增zhset验证码字符集合(中文) 3.2.1 新增
默认参数配置:
参数设置使用两种方式。
实例化传入参数:
或者采用动态设置的方式,如:
验证码字体
默认情况下,验证码的字体是随机使用 thinkphp/library/think/verify/ttfs/目录下面的字体文件,我们可以指定验证码的字体,例如:
$verify = new \\\\think\\\\verify();// 验证码字体使用 thinkphp/library/think/verify/ttfs/5.ttf$verify->fontttf = '5.ttf';$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/simhei.ttf$verify->usezh = true;$verify->entry();显示效果如图:
如果无法正常显示,请确认你的 thinkphp/library/think/verify/zhttfs/ 目录下面存在中文字体文件。
若thinkphp/library/think/verify/zhttfs/里面没有中文字体文件,可以下载或者从c:\\\\windows\\\\fonts\\\\里面找到中文字体文件复制过来,注意字体文件扩展名为.ttf。
验证码检测
可以用think\\\\verify类的check方法检测验证码的输入是否正确,例如,下面是封装的一个验证码检测的函数:
// 检测输入的验证码是否正确,$code为用户输入的验证码字符串function check_verify($code, $id = ''){$verify = new \\\\think\\\\verify();return $verify->check($code, $id);}练习:以登录为例:
控制器方法:
<?phpnamespace 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' => 'sim
优化必备:网站seo软文写作技巧自己建网站如何进行结构优化流利说实战经验!多语言UI设计避坑指南404页面文案原来还可以这样写买云服务器文档介绍内容数据库备份-其他问题网站空间费是什么使用网站管理的系统点击数据库