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图片验证码代码
Mar 27 PHP
Discuz 6.0+ 批量注册用户名
Sep 13 PHP
PHP中的函数-- foreach()的用法详解
Jun 24 PHP
ThinkPHP独立分组使用的注意事项
Nov 25 PHP
php5.3不能连接mssql数据库的解决方法
Dec 27 PHP
dedecms集成财付通支付接口
Dec 28 PHP
PHP中的替代语法介绍
Jan 09 PHP
thinkphp3.2点击刷新生成验证码
Feb 16 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
Oct 19 PHP
PHP 网站修改默认访问文件的nginx配置
May 27 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
Apr 04 PHP
laravel配置Redis多个库的实现方法
Apr 10 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 分页分组类
2009/12/10 PHP
PHP中的错误处理、异常处理机制分析
2012/05/07 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
php将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
2015/10/10 PHP
JavaScript 乱码问题
2009/08/06 Javascript
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
分享Javascript中最常用的55个经典小技巧
2013/11/29 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
JavaScript实现点击单元格改变背景色的方法
2016/02/12 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
详解Django中views数据查询使用locals()函数进行优化
2020/08/24 Python
利用Python优雅的登录校园网
2020/10/21 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
施工安全生产承诺书
2014/05/23 职场文书
欢迎标语大全
2014/06/21 职场文书
公安交警个人对照检查材料思想汇报
2014/10/01 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
学生会工作感言
2015/08/07 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书
python实现层次聚类的方法
2021/11/01 Python
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技
mysql函数之截取字符串的实现
2022/08/14 MySQL