Rumah  >  Artikel  >  rangka kerja php  >  yii自带验证码怎么做

yii自带验证码怎么做

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼asal
2019-11-09 10:39:152030semak imbas

yii自带验证码怎么做

总共分为三个方面:控制器配置、模型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,&#39;verifyCode&#39;)->widget(
    Captcha::className(),
    [
    &#39;template&#39; => &#39;{image}{input}&#39;,
    &#39;captchaAction&#39;=>&#39;user/captcha&#39;, // 此注意要使用自己配置的那个控制器验证码路由
    &#39;imageOptions&#39;=>[ &#39;style&#39;=>&#39;cursor:pointer;width:77px&#39;]
    ]
    )

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

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

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

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

Atas ialah kandungan terperinci yii自带验证码怎么做. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:yii怎么返回404Artikel seterusnya:yii中的gii打不开怎么办

Artikel berkaitan

Lihat lagi