• Yii2自带验证码实现


      总共分为三个方面:控制器配置、模型rules配置和视图配置。

           第一步:控制器配置

        将下列代码配置在actions中,请求验证码链接对应为 “控制器/captcha”

               'captcha' => [
                        'class' => 'yiicaptchaCaptchaAction',
                   //     'backColor'=>0x000000,//背景颜色
                        'maxLength' => 4, //最大显示个数
                        'minLength' => 4,//最少显示个数
                        'padding' => 5,//间距
                        'height'=>45,//高度
                        'width' => 75,  //宽度
                     //   'foreColor'=>0xffffff,     //字体颜色
                        'offset'=>4,
                ],
    

      

           第二步:模型rules配置,即验证配置。

        首先声明公共变量 

            public $verifyCode
    

             其次在rules方法中配置验证

    ['verifyCode', 'captcha','captchaAction'=>'user/captcha','on' => ['login']]

        在这条配置中的"captchaAction"加入了配置,即控制器的路由,如果不进行配置的话会走site/captcha的路由,这是框架样例的路由。

           第三步:视图中的配置

        在ActiveForm中加入如下代码即可了

          

    <?= $form->field($model,'verifyCode')->widget(
                        Captcha::className(),
                        [
                            'template' => '{image}{input}',
                            'captchaAction'=>'user/captcha', // 此注意要使用自己配置的那个控制器验证码路由
                            'imageOptions'=>[ 'style'=>'cursor:pointer;77px']
                        ]
                    )
    

      最后有一个巨坑的问题:由于编码过程中使用了一些windows下的换行符或者空格,导致了未知的输出,会导致验证码图片不能够正常的生成。

        这是需要在CaptchaAction类中的renderImageByGD方法中加入如下代码:

            imagecolordeallocate($image, $foreColor);
    
            ob_clean(); // 此行为插入代码,目的是清空缓存区为输出图片提供干净空间。
            ob_start();
            imagepng($image);
            imagedestroy($image);
    

      

  • 相关阅读:
    MySQL自定义函数 1418报错
    MySQL存储过程查询
    MySQL存储过程---游标
    MySQL存储过程---流程控制(循环)
    MySQL存储过程---流程控制(分支)
    设计模式——单例模式
    准备写一个 四川票务网的 检测票自动买汽车票功能,结果登录不上悲伤,继续研究
    python批量下载微信好友头像,微信头像批量下载
    arduino 522样本中文注释
    zabbix服务的部署
  • 原文地址:https://www.cnblogs.com/youligai/p/7478448.html
Copyright © 2020-2023  润新知