最近需要用到验证码,搜索了很多关于Yii2验证码的切换的介绍,下面我来记录一下,有需要了解Yii2下验证码的切换的朋友可参考。希望此文章对各位有所帮助。
模型代码如下:
<?phpnamespace 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'], ]; }}
控制器代码如下:
<?phpnamespace 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]); } //授权规则}
视图代码如下:
<?phpuse 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')?>" </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))
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。
新闻热点
疑难解答
图片精选