一.生成验证码
$Verify = new \Think\Verify(); $Verify->entry();
生成的验证码信息会保存到session中,里面包含数据有:
array('verify_code'=>'当前验证码的值','verify_time'=>'验证码生成的时间戳')
如果需要在一个页面中生成多个验证码的话,entry方法中需要传入可标识的信息,例如
// 验证码1 $Verify = new \Think\Verify(); $Verify->entry(1);
// 验证码2
$Verify = new \Think\Verify();
$Verify->entry(2);
验证码参数
可以对生成的验证码设置相关的参数,
//设置验证码参数 $config = array( 'fontSize'=>30, //验证码字体大小 'length'=>3, //验证码位数 'useNoise'=>false,//关闭验证码杂点
); //实例化验证码类,并传入参数 $verify = new Verify($config); //生成验证码 $verify->entry();
上面,采用的配置变量方式来修改验证码参数,也可以使用动态设置方法:
//实例化验证码类,并传入参数 $verify = new Verify(); //验证码字体大小 $verify->fontSize = 30; //验证码位数 $verify->length = 3; //关闭验证码杂点 $verify->useNoise = false; //设置验证码字体 $verify->fontttf = '5.ttf'; //设置背景图片功能,随机使用 $verify->useImgBg = true; //取消曲线混淆 $verify->useCurve = false; //设置验证码的高 $verify->imageH = 100; //设置验证码的宽 $verify->imageW = 100; //设置验证码的长度 $verify->length = 3; //设置验证码加密密钥 $verify->seKey = 'YCKU.COM'; //设置验证码背景颜色 $verify->bg = array(200,200,200); //生成验证码 $verify->entry();
如果想让验证码显示中文字符,那么需要几个步骤:
1.在 Think/zhttfs 文件夹下引入中文字体文件,比如加粗雅黑 msyhbd.ttf;
2.设置字体文件;
//设置验证码字体
$verify->fontttf = 'msyhbd.ttf';
3.设置中文验证码
//设置中文验证码
$verify->useZh = true;
PS:由于中文字符较为庞大,你也可以限定指定的中文字符。
//限定中文字符
$verify->zhSet = 'xxx是个好人';
//设置纯数字
$verify->codeSet='0123456789';
二、生成验证码例子:
YzController.class.php
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
<?php namespace Yz\Controller; use Think\Controller; class YzController extends Controller { public function xianshi() { $yz = $_POST["uid"]; if(empty($yz))//如果传过来的$_POST值为空,显示页面 { $this->show(); } else//如果不为空,显示验证码 { $verify = new \Think\Verify(); //如果验证成功,返回true,失败false if($verify->check($yz/*, $id*/))//$id为验证码的标识,在$Verify->entry();中没有定义标识,不写 { echo "注册成功!"; } } } public function yzm()//生成验证码方法 { $Verify = new \Think\Verify(); $Verify->fontSize = 30;//验证码字体大小 $Verify->length = 5;//验证码字体的长度 $Verify->fontttf = '5.ttf';//指定用那种字体 $Verify->length = 5; $Verify->entry(); } public function _empty()//空方法,防止报错 { $this->display('Empty/empty'); } }
xianshi.html
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="__PUBLIC__/js/jquery-1.11.2.min.js"></script> <title>无标题文档</title> </head> <body> <form action="__ACTION__" method="post"> <div><input type="text" id="yz" name="uid" /> <img id="img" src="__CONTROLLER__/yzm" /> </div> <div><input type="submit" value="验证" id="btn" /></div> </form> <script type="text/javascript"> //点击图片,定义src,再走一遍方法,BUG是个别浏览器不兼容,可生成随机数,当参数传值 $("#img").click(function(){ var a = Math.ceil(Math.random()*100);//生成随机数,Math.random()是生成随机数,Math.ceil()是向上取整,Math.ceil(Math.random())都是取整到1,可以*100来生成1-100的随机整数 alert(a); $("#img").attr("src","__CONTROLLER__/yzm/suijishu/"+a+"");//个别浏览器如果地址一样,不加载,可以后带参数(生成随机数) }) </script> </body> </html>