Yii2下点击验证码的切换实例代码
2018-09-07 15:09
最近需要用到验证码,搜索了很多关于Yii2验证码的切换的介绍,下面我来记录一下,有需要了解Yii2下验证码的切换的朋友可参考。希望此文章对各位有所帮助。
模型代码如下:
<?php namespace app\admin\models; use yii; use yii\base\model; use yii\captcha\Captcha; class LoginForm extends Model{ public $verifyCode; public $password; public $username; public function rules(){ return [ [verifyCode,captcha,captchaAction=>/admin/login/captcha,message=>{attribute}], [[password,username],required], ]; } }
控制器代码如下:
<?php namespace app\admin\controllers; use Yii; use yii\web\Controller; use app\admin\models\LoginForm; use yii\filters\AccessControl; use yii\filters\VerbFilter; use yii\captcha\CaptchaAction; class LoginController extends Controller{ public function actions(){ return [ captcha=>yii\captcha\CaptchaAction, maxLength=>4, minLength=>3, width=>10, height=>10 ]; } public function actionIndex(){ $log = new LoginForm(); return $this->renderPartial(index,[model=>$log]); } //授权规则 }
视图代码如下:
<?php use yii\helpers\Html; use yii\bootstrap\Nav; use yii\bootstrap\NavBar; use yii\widgets\Breadcrumbs; use app\assets\AppAsset; use yii\widgets\ActiveFiel; use yii\widgets\ActiveForm; use yii\captcha\Captcha; use app\components\HelloWidget; //url 创建 use yii\helpers\Url; AppAsset::register($this); ?> <?php $this->beginPage()?> <!DOCTYPE html> <html> <head> <title>博客后台管理系统</title> <meta charset=utf-8> <meta http-equiv=X-UA-Compatible content=IE=edge,chrome=1 /> <?=Html::cssFile(@web/css/bootstrap.min.css)?> <?=Html::cssFile(@web/css/style.css)?> <?=Html::jsFile(@web/js/jquery-1.11.3.min.js);?> <?=Html::jsFile(@web/js/bootstrap.min.js);?> <?php ?> </head> <?php $this->beginBody()?> <body> <div class=login-box> <div class=login> <div class=login-icon> </div> <h4 class=login-title>博客后台管理系统</h4> <?php $form=ActiveForm::begin([method=>post,action=> \Yii::$app->urlManager->createUrl(/admin/login/index)])?> <div class=login-input-box mb10> <input type=text class=form-control name=username placeholder=用户名> </div> <div class=login-input-box mb10> <input class=form-control type=password name=password placeholder=密码> </div> <div class=login-input-box mb30> <input class=form-control type=text name=code placeholder=验证码> <span class=login-code> <img id=code_img src=<?= Url::toRoute(/admin/login/captcha)?> title=点击刷新验证码 onClick=get_code(this);> </span> </div> <input class=inputbtn bg-success btn-block type=submit value=登 录> <?php ActiveForm::end();?> </div> </div> <script type=text/javascript> //刷新验证码 function get_code(obj) { if(!obj) { obj = document.getElementById(code_img); } obj.src= obj.src + &t=+Date.parse(new Date()); } </script> </body> <?php $this->beginBody()?> </html> <?php $this->endPage()?>
这里整个代码差不多了但是要设置一样更重要的 app/vendor/yiisoft/yii2/captcha/的文件下的CaptchaAction.php这文件中修改getVerifyCode($regenerate = false) 的方法$regenerate参数为true (getVerifyCode($regenerate = true))
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。