yii2使用验证码组件

yii2自带的例子里面有一个关于验证码的使用例子,但是本篇文章讨论的是用另外一种方式手动生成和验证验证码。

生成验证码

在要使用验证码的Controller里面实现actions方法:

class TestController extends Controller{
    public function actions(){
        return [
            'captchatest' => [
                'class' => 'yii\captcha\CaptchaAction',
                'maxLength' => 4, //生成的验证码最大长度
                'minLength' => 4  //生成的验证码最短长度
            ]
        ];
    }   
}

以上代码通过实现actions方法创建了一个叫captchatest的action,上面的action我只填了两个参数,还有其他参数可以参考yii\captcha\CaptchaAction的publish属性

在页面中使用验证码

在要使用验证码的view里面插入以下代码:

<?php echo Captcha::widget(['name'=>'captchaimg','captchaAction'=>'captchatest','imageOptions'=>['id'=>'captchaimg', 'title'=>'换一个', 'alt'=>'换一个', 'style'=>'cursor:pointer;margin-top:10px; height: 22px;'],'template'=>'{image}']); ?>

以上代码主要需要正确填写captchaAction,填写你刚才创建的captchaAction,需要完整的namespace,然后会生成一个img

验证验证码

在action中接收到表单传来的验证码后,使用:

$this->createAction('captchatest')->validate($captchCode, false); //$captchCode为用户输入的验证码

validate函数会返回true/false,该函数的第二个参数为是否对大小写敏感

刷新验证码

生成的验证码有时用户看不清楚,需要重新刷新,可以使用该图片的url加上refresh参数,然后会返回一个json数据,其中有一个url的属性,调用该url即可获取新验证码,如图片地址为:/index.php?r=test%2Fcaptchatest&v=5680ce41e9cb0,获取图片地址为:/index.php?r=feedback%2Fcaptchafeedback&v=5680ce41e9cb0&refresh=1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,067评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,843评论 25 709
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,630评论 0 17
  • 我终于知道昨晚的感觉是啥了 蓦然回首原来是你 谢谢是你 被人疼的感觉好像还不错
    sunshine相对忘贫阅读 133评论 0 1
  • 九月四日入职,做一份从未接触过的行业—眼镜。 本身我是打算自己学了后开家眼镜店的,自己也近四十岁了,眼镜行业利...
    云朵中有光阅读 234评论 0 0