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

Yii2使用自带验证码

佳航网络工作室2年前 (2024-01-23)Yii21285

** 分别MVC 三部分来看怎么实现yii2自带的验证码。 **

** Model **

class LoginForm extends Model
{
  public $username;
  public $password;
  public $rememberMe = true;
  public $verify;
  private $_user;
  /**
   * @inheritdoc
   */
  public function rules()
  {
    return [
      // username and password are both required
      [['username', 'password'], 'required'],
      // rememberMe must be a boolean value
      ['rememberMe', 'boolean'],
      // password is validated by validatePassword()
      ['password', 'validatePassword'],
      ['verify', 'captcha', 'captchaAction'=>'site/captcha'],
    ];
  }
}

可以看到只要在rules中添加

['verify', 'captcha', 'captchaAction'=>'site/captcha'],

** View **

$form->field($model,'verify')->widget(Captcha::className(),[
      'captchaAction'=>'site/captcha',
      'imageOptions'=>[
        'alt'=>'刷新',
        'title'=>'刷新',
        'style'=>'cursor:pointer; display:inline'
      ],
      'template' => '<div class="col-lg-7" style="padding: 0;">{input}</div><div class="col-lg-5" style="padding: 0; text-align: right">{image}</div><div class="clearfix"></div>',
      'options' => [
        'placeholder' => '输入验证码',
        'class' => 'form-control'
      ]
    ])->label(false);

** Controller **

  /**
   * @inheritdoc
   */
  public function actions()
  {
    return [
      'captcha' => [
        'class' => 'yii\captcha\CaptchaAction',
        'backColor'=>0xffffff,//背景颜色
        'maxLength' => 6, //最大显示个数
        'minLength' => 5,//最少显示个数
        'padding' => 5,//间距
        'height'=>34,//高度
        'width' => 120,  //宽度
        'foreColor'=>0x000000,     //字体颜色
        'offset'=>4,        //设置字符偏移量 有效果
      ],
    ];
  }

在控制器中加入公用的captcha,这是一个action


** 注意**

整个配置其实是一个很简单的过程,yii2已经帮我实现好了actionCaptcha, 这个action中包含了验证码生成,图片生成,验证码验证的操作,我们只需要在actions中引入这个actionCaptcha, 同时在Model的验证码验证中,将验证方法指向该控制器下面的captcha,同时在View中注意验证提交的地址即可。

整个处理流程类似处理普通的action,只是actionCaptcha 集成了较多功能的可用其他controller而已。



————————————————

版权声明:本文为CSDN博主「leo_howl」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/u013050330/article/details/102988324



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

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

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

标签: Yii2
分享给朋友:

“Yii2使用自带验证码” 的相关文章

YII2.0 高级模板增加api [ 2.0 版本 ]

第一步进入高级模板根目录,复制backend改名为apicp backend/ api -r第二步复制api初始化模板cp -a environments/dev/frontend environments/dev/api cp ...

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请求...

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

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

发表评论

访客

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