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中在数据库中保存Checkbox数据(2)
Oct 09 PHP
php模拟ping命令(php exec函数的使用方法)
Oct 25 PHP
php的一个简单加密解密代码
Jan 14 PHP
php支付宝接口用法分析
Jan 04 PHP
一个非常完美的读写ini格式的PHP配置类分享
Feb 12 PHP
PHP封装函数实现生成随机的字符串验证码
Jan 24 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
Sep 13 PHP
PHP实现APP微信支付的实例讲解
Feb 10 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
Aug 07 PHP
PHP+Oracle本地开发环境搭建方法详解
Apr 01 PHP
laravel 框架执行流程与原理简单分析
Feb 01 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
Apr 06 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
两个开源的Php输出Excel文件类
2010/02/08 PHP
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
php中运用http调用的GET和POST方法示例
2014/09/29 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
php的4种常用运行方式详解
2016/12/22 PHP
javascript的字符串按引用复制和传递,按值来比较介绍与应用
2012/12/28 Javascript
如何编写高质量JS代码(续)
2015/02/25 Javascript
jquery模拟alert的弹窗插件
2015/07/31 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
通过实例了解js函数中参数的传递
2019/06/15 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
[01:02:20]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python中对列表排序实例
2015/01/04 Python
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
python 上下文管理器使用方法小结
2017/10/10 Python
Python使用grequests并发发送请求的示例
2020/11/05 Python
Django框架请求生命周期实现原理
2020/11/13 Python
Django 实现图片上传和下载功能
2020/12/31 Python
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
BIFFI美国站:意大利BIFFI BOUTIQUES豪华多品牌时装零售公司
2020/02/11 全球购物
如何写一个自定义标签
2012/12/28 面试题
学校门卫工作职责
2013/12/07 职场文书
仓库管理专业个人的自我评价
2013/12/30 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
《刷子李》教学反思
2016/02/20 职场文书
《好妈妈胜过好老师》:每个孩子的优秀都是有源头的
2020/01/03 职场文书
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS