当前位置:首页 > CMS教程 > 其它CMS > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-06-30 22:02:12 浏览: 评论:0 

这篇文章主要介绍了yii2.0实现验证用户名与邮箱功能的相关资料,需要的朋友可以参考下,本文为大家分享了yii2.0实现验证用户名与邮箱功能的相关代码,具体内容如下

视图signup.php代码:

  1. <?php 
  2. use yii\helpers\Html; 
  3. use yii\bootstrap\ActiveForm; 
  4.  
  5. /* @var $this yii\web\View */ 
  6. /* @var $form yii\bootstrap\ActiveForm */ 
  7. /* @var $model \frontend\models\SignupForm */ 
  8.  
  9. $this->title = '注册'
  10. $this->params['breadcrumbs'][] = $this->title; 
  11. ?> 
  12. <div class="site-signup"
  13.  <h1><?= Html::encode($this->title) ?></h1> 
  14.  
  15.  <p>Please fill out the following fields to signup:</p> 
  16.  
  17.  <div class="row"
  18.   <div class="col-lg-5"
  19.    <?php $form = ActiveForm::begin([ 
  20.     'id' => 'form-signup'
  21.     'enableAjaxValidation' => true, 
  22.     'enableClientValidation' => true, 
  23.    ]); ?> 
  24.       
  25.     <?= $form->field($model'username') ?> 
  26.     <?= $form->field($model'email') ?> 
  27.     <?= $form->field($model'password')->passwordInput() ?> 
  28.     <?= $form->field($model'password_compare')->passwordInput() ?> 
  29.       
  30.     <div class="form-group"
  31.      <?= Html::submitButton('Signup', ['class' => 'btn btn-primary''name' => 'signup-button']) ?> 
  32.     </div> 
  33.       
  34.    <?php ActiveForm::end(); ?> 
  35.   </div> 
  36.  </div> 
  37. </div> 

控制器SiteController.php

  1. public function actionSignup() 
  2.  { 
  3.   $model = new SignupForm(); 
  4.     
  5.   $model->load($_POST); 
  6.   if (Yii::$app->request->isAjax) { 
  7.    Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 
  8.    return \yii\bootstrap\ActiveForm::validate($model); 
  9.   } 
  10.     
  11.   if ($model->load(Yii::$app->request->post())) { 
  12.    if ($user = $model->signup()) { 
  13.     if (Yii::$app->getUser()->login($user)) { 
  14.      return $this->goHome(); 
  15.     } 
  16.    } 
  17.   } 
  18.  
  19.   return $this->render('signup', [ 
  20.    'model' => $model
  21.   ]); 
  22.  } 

模型SignupForm.php

  1. use common\models\User; 
  2. use yii\base\Model; 
  3. use Yii; 
  4.  
  5. /** 
  6.  * Signup form 
  7.  */ 
  8. class SignupForm extends Model 
  9.  public $username
  10.  public $email
  11.  public $password
  12.  public $password_compare
  13.  
  14.  /** 
  15.   * @inheritdoc 
  16.   */ 
  17.  public function rules() 
  18.  { 
  19.   return [ 
  20.    ['username''filter''filter' => 'trim'], 
  21.    ['username''required'], 
  22.    ['username''unique''targetClass' => '\common\models\User''message' => '用户名已存在.'], 
  23.    ['username''string''min' => 2, 'max' => 255], 
  24.  
  25.    ['email''filter''filter' => 'trim'], 
  26.    ['email''required'], 
  27.    ['email''email'], 
  28.    ['email''unique''targetClass' => '\common\models\User''message' => '邮箱名已存在.'], 
  29.  
  30.    [['password''password_compare'], 'required'], 
  31.    [['password''password_compare'], 'string''min' => 6, 'max' => 16, 'message' => '{attribute}是6-16位数字或字母'], 
  32.    ['password_compare''compare''compareAttribute' => 'password''message' => '两次密码不一致'], 
  33.   ]; 
  34.  } 
  35.  
  36.  /** 
  37.   * Signs user up. 
  38.   * 
  39.   * @return User|null the saved model or null if saving fails 
  40.   */ 
  41.  public function signup() 
  42.  { 
  43.   if ($this->validate()) { 
  44.    $user = new User(); 
  45.    $user->username = $this->username; 
  46.    $user->email = $this->email; 
  47.    $user->setPassword($this->password); 
  48.    $user->generateAuthKey(); 
  49.    if ($user->save()) { 
  50.     return $user
  51.    } 
  52.   } 
  53.  
  54.   return null; 
  55.  } 

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

Tags: yii2 0验证用户名

分享到: