thinkphp框架中的验证码使用及验证码刷新

thinkphp框架中为我们提供了用于生成验证码的类:Verify.class.php,其具体的位置是:ThinkPHP/Library/Think/Verify.class.php。因此,为了在项目中使用验证码,我们需要在控制器中定义一个调用验证码的方法verifyImg,然后在HTML中需要用到验证码的地方调用此方法。具体的实现代码如下所示:

1、在控制器中定义个verifyImg方法

function verifyImg(){
        $config=array(
            'imageH' => 25,
            'imageW' => 90,
            'fontSize'=>12,
            'fontttf' =>'4.ttf',
            'length' => 4,
        );
        $verify=new \Think\Verify($config);
        $verify->entry();
        $this->display();
    }
在上面的代码中我们将一个config数组传入了命名空间中,在参数中我们可以设置验证码的高度、宽度、个数、字体大小等等,更具体的可以参考Verify类的定义。

2、在HTML中需要验证码的地方调用上面的verifyImg方法。我们通常是在<img>的src中调用该方法

<lable>验证码:</lable>
<input type="text" id="verify" class="verify"/>
<img src="{:U('Home/Blog/verifyImg')}" id="verifyImg" style="margin-left: 5px;vertical-align: bottom"><!--此处用于显示验证码-->
<a href="javascript:void(0)" id="refresh_verify" style="text-decoration: underline">看不清</a><!--当验证码显示不清晰时,点击可以刷新验证码-->
3、刷新验证码

//刷新验证码
$('#refresh_verify').click(function(){
    //var time=new Date().getTime();
    var verifyimg=$('#refresh_verify').attr("src");
    //'/ThinkPHP01/index.php?s=Home/User/verifyImg/'
    //$('#verifyImg').attr("src",'/ThinkPHP01/index.php?s=Home/Blog/verifyImg/'+time);<span style="font-family: Arial, Helvetica, sans-serif;">//不加时间也可以</span>
    $('#verifyImg').attr("src",'/ThinkPHP01/index.php?s=Home/User/verifyImg/');
})
在javascript中实现验证码的刷新
4、验证码的验证过程,这个过程要通过三个步骤来实现,1)通过ajax将用户填入的验证码信息发送到php端;2)php端接收到验证码信息后调用check()方法进行验证,并将验证结果返回;3)javascript中收到php端返回的验证结果,验证结束

javascript部分:

$('#certain_info').click(function(){
            var verify_info=$('#verify').val();
            var verify_check_sign="";
            $.ajax({
                url: '/ThinkPHP01/index.php?s=Home/Blog/blog/verify_info/' + verify_info,//提交访问的URL,地址后缀不要加html
                type: 'GET',//提交的方法
                dataType: 'text',//返回的内容的类型,由于PHP文件是直接echo的,那么这里就是text
                timeout: 1000,//超时时间
                async: false,//若设置为true,则无法为全局变量赋值,谨记
                error: function () { //如果出错,执行函数
                    alert('网络繁忙,请稍后再试!');
                },
                success:function(data) {
                    var str=eval("("+data+")");//返回的数据是json类型
                    var comment=str.verify_check;//获取php返回的数据
                    if(comment==1){
                        verify_check_sign=1;
                    }
                    else if(comment==0){
                        verify_check_sign=0;
                    }
                }
            });
            if(verify_check_sign==0){
                $('#prompt_verify').html("*验证码不正确!");
            }
        });
php部分:

if(IS_AJAX){
            //接收验证码并且进行验证
            $verify_info=$_GET['verify_info'];
            $verify_check=0;
            if(!$verify->check($verify_info)){
                $verify_check=0;
            }
            else{
                $verify_check=1;
            }

            $this->ajaxReturn(array(
                'verify_check'=>$verify_check
            ));
        }
效果图:

thinkphp框架中的验证码使用及验证码刷新_第1张图片




你可能感兴趣的:(PHP,验证码,验证码刷新)