ThinkPHP之验证码的使用

ThinkPHP中已经提供了验证码的生成以及验证的功能。下面介绍如何使用验证码。编程的时候还是采用MVC的方式

View层


 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title></title>
 6 </head>
 7 <body>
 8 <form action="{$smarty.const.__SELF__}" method="post">
 9     用户名:<input type="text" name="username"/><br/>
10     密&nbsp;&nbsp;码:<input type="password" name="password"/><br/>
11     验证码:<input type="text" name="code"/>
12     <img src="http://localhost/CloudTemp/index.php/Home/Index/vertifyImg" alt=""/><br/>
13     <button type="submit">提交</button>
14 </form>
15 </body>
16 </html>

模版引擎采用smarty,__SELF__表示自身的URL,即表单提交给自己

Model层


<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2016/6/27
 * Time: 9:14
 */

namespace Home\Model;
use Think\Model;

class ManageModel extends Model{
    function checkNamePwd($name, $pwd){
        $userpwd = $this->getFieldByUsername($name, ‘userpwd‘);
        if($userpwd != null && $userpwd == $pwd)
            return true;
        else
            return false;
    }
}

model层对用户提交的用户名和密码进行数据匹配查询,如果一致,则返回true。

Controller层


<?php
namespace Home\Controller;
use Think\Controller;
use Home\Model\ManageModel;
class IndexController extends Controller {

    public function vertifyImg(){
        $config =    array(
            ‘fontSize‘    =>    15,    // 验证码字体大小
            ‘length‘      =>    4,     // 验证码位数
            ‘useNoise‘    =>    false, // 开启验证码杂点
            ‘imageH‘      =>    30,
            ‘imageW‘      =>    110,
            ‘fontttf‘     =>    ‘4.ttf‘
        );
        $Verify =     new \Think\Verify($config);
        $Verify->entry();
    }

    public function  login(){
        if(empty($_POST))
            $this->display();
        else{
            if($this->checkVerify($_POST[‘code‘])){
                $user = new ManageModel(‘user‘);
                $res = $user->checkNamePwd($_POST[‘username‘], $_POST[‘password‘]);
                if($res == true){
                    session(‘username‘, $_POST[‘username‘]);
                    session(‘password‘, $_POST[‘password‘]);
                    echo ‘ok‘;
                }
                else
                    $this->display();
            }

            else
                $this->display();
        }
    }
     private function checkVerify($code, $id = ‘‘){
        $verify = new \Think\Verify();
        return $verify->check($code, $id);
    }
}

在controller层生成验证码,用户身份检查。如果用户输入的用户名、密码、验证码正确则将用户名和密码保存到session中,并返回OK,否则返回登录页面。

时间: 2024-08-25 00:15:09

ThinkPHP之验证码的使用的相关文章

&lt;转&gt;用thinkPHP实现验证码的功能

许多系统的登录都有验证码,而如果使用thinkPHP框架搭建网站的话,验证码的生成和验证就比较容易了 1.生成验证码 thinkPHP有对应生成验证码的方法 要使用验证码,需要导入扩展类库中的ORG.Util.Image类库和ORG.Util.String类库.我们通过在在模块类中增加一个verify方法来用于显示验证码: Public function verify(){ import('ORG.Util.Image'); Image::buildImageVerify(); } 2.验证验证

用thinkPHP实现验证码的功能

许多系统的登录都有验证码,而如果使用thinkPHP框架搭建网站的话,验证码的生成和验证就比较容易了 1.生成验证码 thinkPHP有对应生成验证码的方法 要使用验证码,需要导入扩展类库中的ORG.Util.Image类库和ORG.Util.String类库.我们通过在在模块类中增加一个verify方法来用于显示验证码: Public function verify(){ import('ORG.Util.Image'); Image::buildImageVerify(); } 2.验证验证

thinkphp 动态验证码

<?php namespace Home\Controller; use Think\Controller; class TestController extends Controller { public function test() { $y=D("YongHu"); $arr=array( array('uid','require','用户名不能为空!'), //表单验证 ); if($y->validate($arr)->create()) //使用vali

thinkPHP的验证码

在thinkphp中使用验证码很容易,只要调用thinkphp现有的方法就可以.当然,php的GD库肯定是要开的(就是在php.ini中要加载gd模块). thinkphp 3.1 ---------------------------------------------------------------------------------------------- 首先,在写Action文件,如:IndexAction.class.php.<?php  class IndexAction e

Thinkphp 5 验证码无法正常显示的排错以及解决方案 【已解决】

Thinkphp 安装 topthink/think-captcha 验证码类库后,就可以使用 {:captcha_img()} 显示验证码了, 具体官网的教程请查看如下链接: https://www.kancloud.cn/manual/thinkphp5/154295 但是有很多人第一次操作都会因为各种原因而无法正常的显示验证码图片,以下我总结了所有可能导致无法显示验证码图片的原因以及对应的解决方法,仅供参考. 一.GD 库问题 打开 F12 查看控制台的报错,如果是 500,则代表服务器问

Thinkphp中验证码的使用以及验证的实现

<input class="TxtValidateCodeCssClass" id="captcha" name="captcha" type="text"> -----------验证码的输入框 <img src="{$smarty.const.__CONTROLLER__}/verifyImg" onclick="this.src='{$smarty.const.__CONT

thinkphp中文验证码不能显示的问题

使用tp框架里的验证码,数字验证码能很好的显示出来,下面是实现的函数 1 function verify(){ 2 import("ORG.Util.Image"); 3 4 return Image::buildImageVerify();//数字验证码 5 6 //return Image::GBVerify();//中文验证码 7 } 模板中的调用 <img src="{$Think.const.__URL__}/verify" /> 显示的效果

thinkphp 检测验证码

/** * 检测验证码 * @param integer $id 验证码ID * @return boolean 检测结果 */function check_verify($code, $id = 1){ $verify = new \Think\Verify(); return $verify->check($code, $id);}

THINKPHP源码学习--------验证码类

TP3.2验证码类的理解 今天在学习中用到了THINKPHP验证码,为了了解究竟,就开始阅读TP验证码的源码. 源码位置:./ThinkPHP/Library/Think/Verify.class.php 首先分段来阅读源码 1.namespace Think; Class Verify表示Thinkphp命名空间下的Verify类 2. protected $config = array( 'seKey'    => 'ThinkPHP.CN', // 验证码加密密钥 'codeSet'  =