Yii2下点击验证码的切换实例代码

5年以前  |  阅读数:232 次  |  编程语言:PHP 

最近需要用到验证码,搜索了很多关于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))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例