<?php

namespace frontend\models;

use Yii;
use yii\base\Model; /**
* Signup form
*/
class SignupForm extends Model
{
public $mobile;
public $captcha;
public $password; /**
* @inheritdoc
*/
public function rules()
{
return [
[['mobile', 'captcha', 'password'], 'trim'],
[['mobile', 'captcha', 'password'], 'required'], [['mobile'], 'match', 'pattern' => '/^1[3|4|5|7|8][0-9]{9}$/'],
[['mobile'], 'unique', 'targetClass' => '\common\models\User', 'message' => '该手机号已被注册!'], [['password'], 'match', 'pattern' => '/^\S+$/'],
[['password'], 'string', 'length' => [6, 32]], [['captcha'], 'captcha'],
];
} /**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'mobile' => '手机号',
'captcha' => '验证码',
'password' => '密码'
];
} public function writeSession()
{
$session = Yii::$app->session;
$session->open();
$session['mobileSignupTimeout'] = time() + 600;
$session['mobileSignup'] = $this->mobile;
$session['mobileSignupPassword'] = $this->password;
}
}

UserController.php

        if ($step !== '2') {
$model = new SignupForm();
$model->load(Yii::$app->request->post()); if (Yii::$app->request->isAjax) {
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($model);
} if (Yii::$app->request->isPost && $model->validate()) {
$model->writeSession();
if ($this->_sendMsg($model->mobile)) {
Yii::info("用户注册发送短信验证码成功!手机号:{$model->mobile}");
Yii::$app->session->setFlash('sentSuccess');
} else {
Yii::warning("用户注册发送短信验证码失败!手机号:{$model->mobile},说明:" . Yii::$app->smser->message);
Yii::$app->session->setFlash('failedToSend', '验证码发送失败,请您再试一次!');
}
return $this->redirect(['signup', 'step' => '2']);
}

signup.php

        if ($step !== '2') {
$model = new SignupForm();
$model->load(Yii::$app->request->post()); if (Yii::$app->request->isAjax) {
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($model);
} if (Yii::$app->request->isPost && $model->validate()) {
$model->writeSession();
if ($this->_sendMsg($model->mobile)) {
Yii::info("用户注册发送短信验证码成功!手机号:{$model->mobile}");
Yii::$app->session->setFlash('sentSuccess');
} else {
Yii::warning("用户注册发送短信验证码失败!手机号:{$model->mobile},说明:" . Yii::$app->smser->message);
Yii::$app->session->setFlash('failedToSend', '验证码发送失败,请您再试一次!');
}
return $this->redirect(['signup', 'step' => '2']);
}

yii2 rules验证规则,ajax验证手机号码是否唯一的更多相关文章

  1. MVC验证05-自定义验证规则、验证2个属性值不等

    原文:MVC验证05-自定义验证规则.验证2个属性值不等 本文体验2个属性值不等.即当一个属性输入值,另外一个属性输入的值不能和第一个属性值相等.相关文章包括: MVC验证01-基础.远程验证   M ...

  2. laravel5.5 自定义验证规则——手机验证RULE

    相信很多小伙伴和我一样烦恼,laravel没有自带手机号的验证,每次验证手机号都要写正则这类的规则,每次都是repeat yourself!违背了编码的一个原则,就是Don't repeat your ...

  3. Sping POJO中如何添加验证规则和验证消息提示

    1.示例,验证规则和错误提示作为注解写在声明变量的地方 @NotNull private long id; @NotNull @Size(min = 2, max = 30,message=" ...

  4. ASP.NET MVC验证 - 自定义验证规则、验证2个属性值不等【待验证】

    提示:保存后才提示错误信息 自定义验证特性,继承ValidationAttribute并实现IClientValidatable 这次重写了基类的IsValid()方法的另外一个重载,因为该重载包含了 ...

  5. Django_Form验证(二),ajax验证

    还是一个简单的html提交页面,ajax提交就不需要form表单了: <p><input id="a" type="text" name=&q ...

  6. JQuery validate验证规则

    //定义中文消息 var cnmsg = { required: “必选字段”, remote: “请修正该字段”, email: “请输入正确格式的电子邮件”, url: “请输入合法的网址”, d ...

  7. easyui的validatebox重写自定义验证规则的几个实例

    validatebox已经实现的几个规则: 验证规则是根据使用需求和验证类型属性来定义的,这些规则已经实现(easyui API): email:匹配E-Mail的正则表达式规则. url:匹配URL ...

  8. ThinkPhp5.0模型验证规则

    Tp5提供了模型数据规则的验证功能,用于在数据save或者update前验证数据的有效性.Tp5提供校验规则的类为\Think\Validate,默认提供的校验规则可以查看该文件. 在Model文件中 ...

  9. Thinkphp 1.验证规则 2.静态定义 3.动态验证

    一.验证规则 数据验证可以对表单中的字段进行非法的验证操作.一般提供了两种验证方式: 静态定 义($_validate 属性)和动态验证(validate()方法). //验证规则 array( ar ...

  10. [Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则

    目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5 ...

随机推荐

  1. 内存的一些magic number和debug crt(0xCCCCCCCC和0xCDCDCDCD,debug版本的CRT为了方便调试程序的初始值)

    调试过debug版本的vc程序的人一定对0xCCCCCCCC和0xCDCDCDCD这样的内存很有印象.这是debug版本的CRT为了方便调试程序,在分配出来还没有初始化的时候提供的初始值. 实际上,W ...

  2. DevOps理论与实践总结

    DevOps指导理论与实践 [第01篇]:郭宏泽:全开源架构下的DevOps实践(转) SonarQube应用指南 [第一篇]:SonarQube Scanner报svn: E170001错误 che ...

  3. 【PyQt5-Qt Designer】对话框系列

    标准输入对话框(QInputDialog)系列: 主要模块 from PyQt5.QtWidgets import QInputDialog 效果如下: 完整代码: from PyQt5.QtWidg ...

  4. 实现用 jquery 禁用浏览器的前进后退按钮

  5. left join 太神奇了

    概念: 把left join左边的表的记录全部找出来.系统会先用表A和表B做个笛卡儿积,然后以表A为基表,去掉笛卡儿积中表A部分为NULL的记录.最后形成你的结果. 进行左连接时,就有涉及到主表.辅表 ...

  6. SQL SERVER 2016研究二

    2.动态数据屏蔽 创建数据表: 创建账号并授予获取屏蔽后数据的权限 此函数:partial(0,"XXX-XXXX-",4) 表示从左边0位开始依次替换到倒数4位. 注意:屏蔽只作 ...

  7. 前端框架之Vue(2)-模板语法

    Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解 ...

  8. seller vue配置路径相对路径【组件 只写简单路径】

    在[webpack.base.conf.js]配置 'components': path.resolve(__dirname, '../src/components')

  9. 158A

    #include <iostream> #include <algorithm> using namespace std; int main() { int groups[10 ...

  10. maven配置本地仓库通用

    只要在settings.xml文件中指定仓库就可以了,然后复制仓库到任何地方都可以使用,eclipse中指定一个settings.xml就可以了 仓库的位置是.locks所在目录