• 技术文章 >php框架 >YII

    yii自带验证码怎么做

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-11-09 10:39:15原创654

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

    第一步:控制器配置

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

    'captcha' => [
             'class' => 'yii\captcha\CaptchaAction',
        //     '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;width:77px']
        ]
        )

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

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

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

    php中文网,大量的免费yii入门教程,欢迎在线学习!

    以上就是yii自带验证码怎么做的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:yii 自带验证码
    上一篇:yii怎么返回404 下一篇:yii中的gii打不开怎么办
    大前端线上培训班

    相关文章推荐

    • yii加载自带验证码的方法• yii加载自带验证码的方法_PHP教程• Yii 2.0自带验证码的使用方法

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网