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


Posted in PHP onMarch 14, 2017

最近需要用到验证码,搜索了很多关于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 相关文章推荐
php实现mysql同步的实现方法
Oct 21 PHP
PHP swfupload图片上传的实例代码
Sep 30 PHP
PHP的变量类型和作用域详解
Mar 12 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
May 08 PHP
php中使用sftp教程
Mar 30 PHP
PHP实现过滤各种HTML标签
May 17 PHP
刷新PHP缓冲区为你的站点加速
Oct 10 PHP
yii去掉必填项中星号的方法
Dec 28 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
Oct 22 PHP
PHP 布尔值的自增与自减的实现方法
May 03 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
Oct 03 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 PHP
php分页查询的简单实现代码
Mar 14 #PHP
php实现购物车产品删除功能(2)
Jul 23 #PHP
php实现产品加入购物车功能(1)
Jul 23 #PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 #PHP
php求数组全排列,元素所有组合的方法总结
Mar 14 #PHP
PHP输出多个元素的排列或组合的方法
Mar 14 #PHP
Linux下快速搭建php开发环境
Mar 13 #PHP
You might like
php foreach 参数强制类型转换的问题
2010/12/10 PHP
php 目录遍历、删除 函数的使用介绍
2013/04/28 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
javascript学习之闭包分析
2010/12/02 Javascript
用javascript判断IE版本号简单实用且向后兼容
2013/09/11 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
2014/09/17 Javascript
js中数组排序sort方法的原理分析
2014/11/20 Javascript
jQuery+css实现的切换图片功能代码
2016/01/27 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
vue axios请求超时的正确处理方法
2018/04/02 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
2018/06/28 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
python算法学习之基数排序实例
2013/12/18 Python
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
Python 基础知识之字符串处理
2017/01/06 Python
python分布式环境下的限流器的示例
2017/10/26 Python
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
对python 命令的-u参数详解
2018/12/03 Python
python批量创建指定名称的文件夹
2019/03/21 Python
Python实现socket非阻塞通讯功能示例
2019/11/06 Python
PyTorch中的C++扩展实现
2020/04/02 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
施华洛世奇天猫官方旗舰店:SWAROVSKI
2017/04/17 全球购物
关于VPN
2012/06/10 面试题
单位刻章介绍信范文
2014/01/11 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
自荐信范文
2019/05/20 职场文书
教你用Java Swing实现自助取款机系统
2021/06/11 Java/Android