当前位置:首页 > PHP > Yii2 > 正文内容

Yii2验证码如何脱离ActiveForm单独使用

佳航网络工作室2年前 (2024-01-24)Yii21270

官方提供了验证码模块(yii\captcha\CaptchaAction),但要结合ActiveForm一起用,封装得有点过度,现在有一种更加简单的用法。

1.在你的controller里引用CaptchaAction:

//WebController
class WebController extends Controller {
    //引入验证码Action
    public function actions() {
        return [
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'maxLength' => 4,
                'minLength' => 4,
            ],
        ];
    }
}

这样即可使用web/captcha访问此验证码。

2.在你的html页面里,加入<img>标签

<img id="verify_image" src="/web/captcha">

使用jquery控制点击刷新:

$('#verify_image').click(function () {
    $.get(
        "/web/captcha?refresh=1",{},function (data) {
            $('#verify_image').attr('src', data.url);
        },"json"
    );
});

直接刷新/web/captcha你会发现验证码是不会变新的,当加上?refresh=1参数时,会返回JSON数据:

{"hash1":466,"hash2":466,"url":"/wap/my/captcha?v=598d8247db06a"}

直接拿url这个JSON值出来赋值给img标签即可。

3.PHP端的校验:

$verifycode = \Yii::$app->request->post('verify_code');
$verifycode2 = $this->createAction("captcha")->getVerifyCode(false);
if($verifycode != $verifycode2){
    //验证码错误
}


扫描二维码推送至手机访问。

版权声明:本文由佳航网络发布,如需转载请注明出处。

本文链接:https://www.jiahang.work/?id=21

标签: Yii2
分享给朋友:

“Yii2验证码如何脱离ActiveForm单独使用” 的相关文章

【从零开始搭建Yii2后台管理系统】一、前言及准备工作

本文将从零开始,分享使用Yii2搭建后台管理系统的开发流程,实现前后台分离、登录验证、菜单管理、权限控制、文章管理等基本功能,可作为其他项目的Starter Kit使用。本猿开发经验有限,若有不足之处还请留言指教,以成抛砖引玉之美。本次开发使用的主要程序及工具Yii2 Framework advan...

【从零开始搭建Yii2后台管理系统】三、搭建数据库,实现后台系统登录

【从零开始搭建Yii2后台管理系统】三、搭建数据库,实现后台系统登录

在上一篇文章中,已实现网站的初步访问,下一步进行网站的完善和改造。1.创建数据库CREATE DATABASE IF NOT EXISTS `moonadmin` DEFAULT CHARACTER SET u...

【从零开始搭建Yii2后台管理系统】四、引入前台UI文件,实现界面的美化

在上一篇文章中,我们已经实现了网站后台的管理员账号登录,下一步我们引入UI文件,美化界面主题。...

Yii2 中如何彻底禁用掉自带的 Yii、JQuery 和 Bootstrap 脚本 [ 2.0 版本 ]

▪ 环境基于 Yii2 高级模板▪ 前言默认情况下,Yii2 会自动加载 Yii、JQuery 和 Bootstrap 等脚本和样式,但有时项目中可能并不需要这些库,或者使用其他版本;下面介绍如何去掉这些库脚本和样式。▪ 去除 Yii.js 相关脚本编辑 frontend\asset\AppAsse...

Yii2.0 多语言设置(高级版配置方法) [ 2.0 版本 ]

Yii2.0 多语言设置(高级版配置方法) [ 2.0 版本 ]

1.设置默认语言:在main.php配置文件加上:'language'=>'zh_CN';2.多语言切换 (我这边是在site控制器里面操作的所以用的'/site/language')html代码 :<a href="&...

yii2 ajax csrf meta,yii2开启CSRF后POST"提交的数据无法被验证"

CSRF全称Cross-site request forgery,即跨站请求伪造。利用CSRF,攻击者可以破坏网络请求会话的完整性。比如如果在一个Web页面中存在js ajax的请求,为了网站安全,你应该仅允许这个ajax请求在当前web页面内发起。否则的话,用户可以通过模拟该ajax请求...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。