ThinkPHP简单的验证码实现

ThinkPHP简单的验证码实现

写一个最简单的TP验证码。

  • 写Controller

首先在Controller/IndexController.class.php(简称Index)文件中编辑:

 1 <?php  
 2 namespace Home\Controller;  
 3 use Think\Controller;  
 4 use Think\Verify;//这个类一定记得引用  
 5 class IndexController extends Controller {  
 6     public function index(){  
 7         $this->redirect('login');//重定向至login方法  
 8     }  
 9       
10     /*验证码*/  
11     public function verify(){  
12         $verify=new Verify();//新建一个验证码  
13         $verify->entry();//输出验证码  
14     }  
15       
16     /*登陆*/  
17     public function login(){  
18         $this->display();//调用对应模板中的login.html  
19     }  
20       
21     /*登陆验证*/  
22     public function login_do(){  
23         $code=I('code');  
24         $verify=new Verify();  
25         if($verify->check($code)){  
26             $this->success("验证成功");  
27         }else{  
28             $this->error("验证码错误");  
29         }  
30     }  
31 }  

 

  • 写html

接下来要去新建一个表单,用于显示验证码并提供一个输入框,输入验证。

如果表单先不新建,现在就去看验证码的效果也是可以的。在浏览器访问:

http://localhost:8088/TP/Home/Index/verif就可以了。

上面操作是在Controller文件夹里面的index控制器进行的。我们去同级文件夹View里面新建一个文件夹叫做index进入index新建login.html

 

html文件的命名与控制器文件中的login方法一直,在方法调用

 $this->display();//调用对应模板中的login.html  

  即可显示login.html

文件中添加如下表单。

  <form action="__URL__/login_do" method="post">
      <input type="text" placeholder="请输入验证码" name="code" required>
      <img src="{:U('verify')}" alt="" onclick="this.src='{:U('verify')}?'+Math.random()" title="看不清换一张">
      <button>登陆</button>
    </form>

  

  • 访问测试

访问http://localhost:8088/TP/Home/Index/login即可看到如下效果。

这个验证码是默认的,以上编写显示过程也是相对比较简单的。

 

 

  • 验证码图形自定义

 

我们接下来可以在此基础之上自定义一下。

修改控制器文件:

 1     /*验证码*/
 2     public function verify(){
 3         $config=array(
 4             'expire'=>  60,  //验证码的有效期(秒)
 5             'useImgBg'=>false  ,    //是否使用背景图片 默认为false
 6             'fontSize'=>35  ,    //验证码字体大小(像素) 默认为25
 7             'useCurve'=>true  ,    //是否使用混淆曲线 默认为true
 8             'useNoise'=>true  ,    //是否添加杂点 默认为true
 9             //'imageW'=>100  ,    //验证码宽度 设置为0为自动计算
10             //'imageH'=>30  ,    //验证码高度 设置为0为自动计算
11             'length'=>4  ,    //验证码位数
12             //'fontttf'=>  ,    //指定验证码字体 默认为随机获取
13             //'useZh'=>  ,    //是否使用中文验证码
14             //'bg'=>  ,    //验证码背景颜色 rgb数组设置,例如 array(243, 251, 254)
15             //'seKey'=>  ,    //验证码的加密密钥
16             //'codeSet'=>  ,    //验证码字符集合 3.2.1 新增
17             //'zhSet'=>  ,    //验证码字符集合(中文) 3.2.1 新增
18         );
19 
20         $verify=new Verify($config);//新建一个验证码
21         $verify->entry();//输出验证码
22     }

这样则可以自定义验证码。

posted @ 2017-09-28 17:51  须小弥  阅读(539)  评论(1编辑  收藏  举报