yii2.0实现验证用户名与邮箱功能


Posted in PHP onDecember 22, 2015

本文为大家分享了yii2.0实现验证用户名与邮箱功能的相关代码,具体内容如下

视图signup.php代码:

<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;

/* @var $this yii\web\View */
/* @var $form yii\bootstrap\ActiveForm */
/* @var $model \frontend\models\SignupForm */

$this->title = '注册';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="site-signup">
 <h1><?= Html::encode($this->title) ?></h1>

 <p>Please fill out the following fields to signup:</p>

 <div class="row">
  <div class="col-lg-5">
   <?php $form = ActiveForm::begin([
    'id' => 'form-signup',
    'enableAjaxValidation' => true,
    'enableClientValidation' => true,
   ]); ?>
    
    <?= $form->field($model, 'username') ?>
    <?= $form->field($model, 'email') ?>
    <?= $form->field($model, 'password')->passwordInput() ?>
    <?= $form->field($model, 'password_compare')->passwordInput() ?>
    
    <div class="form-group">
     <?= Html::submitButton('Signup', ['class' => 'btn btn-primary', 'name' => 'signup-button']) ?>
    </div>
    
   <?php ActiveForm::end(); ?>
  </div>
 </div>
</div>

控制器SiteController.php

public function actionSignup()
 {
  $model = new SignupForm();
  
  $model->load($_POST);
  if (Yii::$app->request->isAjax) {
   Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
   return \yii\bootstrap\ActiveForm::validate($model);
  }
  
  if ($model->load(Yii::$app->request->post())) {
   if ($user = $model->signup()) {
    if (Yii::$app->getUser()->login($user)) {
     return $this->goHome();
    }
   }
  }

  return $this->render('signup', [
   'model' => $model,
  ]);
 }

模型SignupForm.php

use common\models\User;
use yii\base\Model;
use Yii;

/**
 * Signup form
 */
class SignupForm extends Model
{
 public $username;
 public $email;
 public $password;
 public $password_compare;

 /**
  * @inheritdoc
  */
 public function rules()
 {
  return [
   ['username', 'filter', 'filter' => 'trim'],
   ['username', 'required'],
   ['username', 'unique', 'targetClass' => '\common\models\User', 'message' => '用户名已存在.'],
   ['username', 'string', 'min' => 2, 'max' => 255],

   ['email', 'filter', 'filter' => 'trim'],
   ['email', 'required'],
   ['email', 'email'],
   ['email', 'unique', 'targetClass' => '\common\models\User', 'message' => '邮箱名已存在.'],

   [['password', 'password_compare'], 'required'],
   [['password', 'password_compare'], 'string', 'min' => 6, 'max' => 16, 'message' => '{attribute}是6-16位数字或字母'],
   ['password_compare', 'compare', 'compareAttribute' => 'password', 'message' => '两次密码不一致'],
  ];
 }

 /**
  * Signs user up.
  *
  * @return User|null the saved model or null if saving fails
  */
 public function signup()
 {
  if ($this->validate()) {
   $user = new User();
   $user->username = $this->username;
   $user->email = $this->email;
   $user->setPassword($this->password);
   $user->generateAuthKey();
   if ($user->save()) {
    return $user;
   }
  }

  return null;
 }
}

以上就是本文的全部内容,帮助大家实现yii2.0验证功能。

PHP 相关文章推荐
浅谈PHP语法(1)
Oct 09 PHP
php根据日期判断星座的函数分享
Feb 13 PHP
PHP判断文章里是否有图片的简单方法
Jul 26 PHP
php查找指定目录下指定大小文件的方法
Nov 28 PHP
PHP删除指定目录中的所有目录及文件的方法
Feb 26 PHP
PHP模拟QQ登录的方法
Jul 29 PHP
php+ajax制作无刷新留言板
Oct 27 PHP
php中二分法查找算法实例分析
Sep 22 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
Mac下关于PHP环境和扩展的安装详解
Oct 17 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 PHP
php回调函数处理数组操作示例
Apr 13 PHP
PHP内核探索之解释器的执行过程
Dec 22 #PHP
PHP内核探索之变量
Dec 22 #PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 #PHP
PHP输入流php://input实例讲解
Dec 22 #PHP
服务器迁移php版本不同可能诱发的问题
Dec 22 #PHP
php上传图片并压缩的实现方法
Dec 22 #PHP
PHP实现图片上传并压缩
Dec 22 #PHP
You might like
一个数据采集类
2007/02/14 PHP
以文件形式缓存php变量的方法
2015/06/26 PHP
PHP中SSO Cookie登录分析和实现
2015/11/06 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
yii使用bootstrap分页样式的实例
2017/01/17 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
jQuery 动画弹出窗体支持多种展现方式
2010/04/29 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
JavaScript原生对象之Number对象的属性和方法详解
2015/03/13 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
JavaScript手机振动API
2016/06/11 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
微信小程序项目实践之验证码倒计时功能
2018/07/18 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
vue配置多代理服务接口地址操作
2020/09/08 Javascript
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
python实现百万答题自动百度搜索答案
2018/01/16 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
日本7net购物网:书籍、漫画、杂志、DVD、游戏邮购
2017/02/17 全球购物
世界上最受欢迎的钓鱼诱饵:Rapala
2019/05/02 全球购物
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
面向对象概念面试题(.NET)
2016/11/04 面试题
应届生服装设计自我评价
2013/09/20 职场文书
社区工作者感言
2014/03/02 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
委托证明范本
2014/11/25 职场文书