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

2025-05-29 0 45

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

视图signup.php代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37
<?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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22
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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57
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验证功能。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 yii2.0实现验证用户名与邮箱功能 https://www.kuaiidc.com/99677.html

相关文章

发表评论
暂无评论