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 分页原理分析,大家可以看看
Dec 21 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
Jun 07 PHP
浅析php单例模式
Nov 25 PHP
PHP基于文件存储实现缓存的方法
Jul 20 PHP
100多行PHP代码实现socks5代理服务器[2]
May 05 PHP
PHP编写的图片验证码类文件分享
Jun 06 PHP
Yii视图CGridView实现操作按钮定义地址示例
Jul 14 PHP
php计算给定日期所在周的开始日期和结束日期示例
Feb 06 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
Feb 18 PHP
PHP 实现浏览记录并按日期分组
May 11 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
Oct 23 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 三维饼图的实现代码
2008/09/28 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
简单JS代码压缩器
2006/10/12 Javascript
JavaScript 浮点数运算 精度问题
2009/10/06 Javascript
JavaScript经典效果集锦
2010/07/06 Javascript
JavaScript截取字符串的Slice、Substring、Substr函数详解和比较
2014/03/20 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
删除条目时弹出的确认对话框
2014/06/05 Javascript
一个jquery实现的不错的多行文字图片滚动效果
2014/09/28 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
OpenLayers3实现图层控件功能
2020/09/25 Javascript
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
python select.select模块通信全过程解析
2017/09/20 Python
python读取各种文件数据方法解析
2018/12/29 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2019/01/15 Python
django ajax发送post请求的两种方法
2020/01/05 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
2020/03/04 Python
python中threading开启关闭线程操作
2020/05/02 Python
急诊科护士自我鉴定
2013/10/14 职场文书
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
人事专员岗位职责
2013/11/20 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
计算机毕业生自荐信范文
2014/03/23 职场文书
计算机毕业生求职信
2014/06/10 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS
JavaScript 去重和重复次数统计
2021/03/31 Javascript
MYSQL如何查看进程和kill进程
2022/03/13 MySQL