yii2.0表单自带验证码

Yii2.0的自带的验证依赖于GD2或者ImageMagick扩展。

使用步骤如下:

第一步,控制器:

在任意controller里面重写方法

代码折叠,点击查看

<?php

namespace frontend\controllers;

use Yii;
use app\models\login;
use app\models\search\UserSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\captcha\CaptchaAction;
/**
 * UserController implements the CRUD actions for User model.
 */
class LoginController extends Controller
{
     public function actions()
    {
        return [
            ‘error‘ => [
                ‘class‘ => ‘yii\web\ErrorAction‘,
            ],
            ‘captcha‘ => [
                ‘class‘ => ‘yii\captcha\CaptchaAction‘,
                ‘fixedVerifyCode‘ => YII_ENV_TEST ? ‘testme‘ : null,
                ‘backColor‘=>0x000000,//背景颜色
                ‘maxLength‘ => 6, //最大显示个数
                ‘minLength‘ => 5,//最少显示个数
                ‘padding‘ => 5,//间距
                ‘height‘=>40,//高度
                ‘width‘ => 130,  //宽度
                ‘foreColor‘=>0xffffff,     //字体颜色
                ‘offset‘=>4,        //设置字符偏移量 有效果
                //‘controller‘=>‘login‘,        //拥有这个动作的controller
                            ],
        ];
    }
    public function actionIndex()
    {
        $model=new Login;
        return $this->render(‘form‘,[‘model‘=>$model]);
    }
}

第二步:模型层,

代码如下:

<?php
namespace app\models;
use Yii;
use yii\base\Model;
class Login extends Model
{
    public $verifyCode;
    public $name;
    public $pwd;
    /**
     * @return array the validation rules.
     */
    public function rules()
    {
        return [
            // verifyCode needs to be entered correctly
            [‘verifyCode‘, ‘captcha‘,‘message‘=>‘验证码不正确‘],
            [[‘name‘,‘pwd‘],‘required‘,‘message‘=>‘{attribute}不能为空‘]
        ];
    }
    /**
     * @return array customized attribute labels
     */
    public function attributeLabels()
    {
        return [
            ‘verifyCode‘ => ‘‘,
        ];
    }
}

最后views层表单:

代码如下:

<?php

use yii\helpers\Html;
use yii\widgets\ActiveForm;
use yii\captcha\Captcha;
/* @var $this yii\web\View */
/* @var $model app\models\User */
/* @var $form yii\widgets\ActiveForm */
?>

<div class="user-form">

    <?php $form = ActiveForm::begin(); ?>

    <?= $form->field($model, ‘name‘)->textInput([‘maxlength‘ => true])->label(‘姓名‘) ?>

    <?= $form->field($model, ‘pwd‘)->textInput([‘maxlength‘ => true])->label(‘密码‘) ?>
    <?= $form->field($model, ‘verifyCode‘)->widget(Captcha::className(), [
            ‘template‘ => ‘<div class="row"><div class="col-lg-2">{input}</div><div class="col-lg-2">{image}</div></div>‘,
        ])->label(‘验证码‘)  ?>

    <div class="form-group">
       <?= Html::submitButton(‘提交‘, [‘class‘=>‘btn btn-primary‘,‘name‘ =>‘submit-button‘]) ?>
        <?= Html::resetButton(‘重置‘, [‘class‘=>‘btn btn-primary‘,‘name‘ =>‘submit-button‘]) ?>
    </div>

    <?php ActiveForm::end(); ?>

</div>

经过以上步骤,验证码基本就可以使用了。

时间: 2024-10-27 04:31:48

yii2.0表单自带验证码的相关文章

form表单action带参数传递

form表单action带参数传递function submit(){  var u = document.forms[0].elements["user"].value;  document.forms[0].action = "admin.jsp?u="+u;  document.forms[0].submit();}

ASP.NET MVC 网站开发总结(五)——Ajax异步提交表单之检查验证码

首先提出一个问题:在做网站开发的时候,用到了验证码来防止恶意提交表单,那么要如何实现当验证码错误时,只是刷新一下验证码,而其它填写的信息不改变? 先说一下为什么有这个需求:以提交注册信息页面为例,一般注册都需要用户填一个验证码信息(防止机器恶意注册),并且这个验证码会提交到后台去进行比对,若是错了则不会检查其他提交信息而直接返回浏览器端提示验证码错误.若是简单地用form表单直接将数据提交到指定的url,当验证码填写错误的信息返回浏览器端的时候,不可避免整个页面都会重新刷新一次,这是用户所不想要

使用ajax上传表单(带文件)

在使用form表单的时候上传文件+表单,会使得页面跳转,而在某些时候不希望跳转,只变化页面中的局部信息 通过查找资料,可以使用FormData进行ajax操作. FormData介绍:XMLHttpRequest Level 2添加了一个新的接口FormData.利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以使用XMLHttpRequest的send()方法来异步的提交这个"表单".比起普通的ajax,使用FormData的最大优

转: ASP.NET+ExtJs4.0+表单提交submit,上传图片到服务器

http://blog.csdn.net/lmaohuanl/article/details/6792057 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&qu

Yii2提交表单提示无法验证

yii2使用gii生成的搜索视图里的表单使用的是get方式,我改为post就提示无法验证,以为是控制器默认访问是get,实际默认是get和post都可以 public function behaviors() { return [ 'verbs' => [ 'class' => VerbFilter::className(), 'actions' => [ 'delete' => ['post'], ], ], ]; } 之所以提示无法验证是因为对于post请求,是有一个CSRF验

JavaScript模拟表单(带数组的复杂数据结构)提交

function test(){    var typeArray = new Array();    typeArray.push("mm");    typeArray.push("gg");        var demoarry = new  Array();    demoarry.push("dd");    demoarry.push("qq");        typeArray.push(demoarry);

html5 表单 自带验证

required="required" 必填 placeholder="xxx-xxxx-xxxx" // 提示 pattern="\d{3}-\d{4}-\d{4} //正则匹配 autofocus // 指针 <fieldset> <legend>Expectations:</legend> // 提示:<legend> 标签为 <fieldset> 元素定义标题. </fieldset

Yii2 ActiveForm表单自定义样式

实例: <?php $form = ActiveForm::begin([ 'fieldConfig' => [ 'template' => '<div class="col-lg-3 control-label color666 fontweight">{label}:</div> <div class="col-lg-5" style="padding-left: 15px;padding-right:

Ajax提交表单时验证码自动验证 php后端验证码检测

本文通过源码展示如何实现表单提交前,验证码先检测正确性,不正确则不提交表单,更新验证码. 1.前端代码 index.html <!DOCTYPE html> <html> <head> <title>验证码提交自验证</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta htt