您的位置:首页 > 编程语言 > PHP开发

学习记录—yii2简单的登录功能实现

2015-10-03 16:33 627 查看
先简单的制作一个登录表单



要求:登录成功则提示【登录成功】,密码错误或用户名错误提示【账户或密码错误!】
前段代码:

<?php $form = ActiveForm::begin([
'id' => 'abc-form',
'options' => ['class' => 'form-horizontal'],
])?>
<?= $form->field($model, 'username')->textInput(['placeholder' => "用户名"])->label('用户名') ?>
<?= $form->field($model, 'password')->passwordInput()->label('密码') ?>
<?= Html::submitButton('提交') ?>
<?php ActiveForm::end() ?>

控制器:

<?php

namespace app\controllers;

use Yii;
use yii\web\Controller;
use app\models\Abc;

class AbcController extends Controller
{
public function actionIndex()
{
Yii::$app->controller->layout = false;
//实例化模型,并定义使用场景
$model = new Abc(['scenario'=>'login']);
if ($model->load(Yii::$app->request->post()) && $model->login()) {
echo "登录成功";
} else {
return $this->render('abc', ['model' => $model,]);
}
}
}
?>


模型:

<?php
namespace app\models;

use Yii;
use yii\db\ActiveRecord;
use yii\web\IdentityInterface;

class Abc extends ActiveRecord implements IdentityInterface
{
//定义特性,用于存储用户输入的信息
public $username;
public $password;

//声明验证规则
public function rules()
{
return [
[['username','password'], 'required','on'=>'login'],//规定username和password为必填
['username', 'string', 'length' => [2, 10], 'on' => 'login'], //用户名长度以及类型验证
['password', 'string', 'length' => [4, 12], 'on' => 'login'], //密码长度以及类型验证
['password', 'validatePassword', 'on' => 'login'],//定义密码的验证规则,使用validatePassword方法进行验证
];
}

//通过用户名查询用户
public static function findByUsername($username)
{
return static::findOne(['username'=>$username]);
}
//密码验证规则
public function validatePassword(){
$user=$this->findByUsername($this->username);
if (!$user || !$user->validatePassword($this->password)) {
$this->addError('password', '用户名或密码错误');
}
}
//登录验证
public function login()
{
if ($this->validate()) {
return Yii::$app->user->login(static::findByUsername($this->username),0);
} else {
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息