yii2大型商城实战开发(后台登陆功能)

控制器 PublicController.php

<?php
    namespace app\modules\controllers;
    use yii\web\Controller;
    use app\modules\models\Admin;
    use Yii;
    class PublicController extends Controller
    {
        public function actionLogin()
        {
            $this->layout=false;
            $model=new Admin;
            if(Yii::$app->request->isPost){
                $post=Yii::$app->request->post();
                if($model->login($post)){
                    $this->redirect(['default/index']);
                    Yii::$app->end();
                }
            }
            return $this->render('login',['model'=>$model]);
        }
    }

模型 Admin.php

<?php
namespace app\modules\models;
use yii\db\ActiveRecord;
use Yii;
class Admin extends ActiveRecord{

    public $rememberMe = true;
    public static function tableName()
    {
        return '{{%admin}}';
    }

    public function rules()
    {

        return [

            ['adminuser', 'required', 'message' => '管理员账号不能为空'],
            ['adminpass', 'required', 'message' => '管理员密码不能为空'],
            ['rememberMe', 'boolean'],
            ['adminpass', 'validatePass'],
         ];   

    }

     public function validatePass()
    {
        if (!$this->hasErrors()) {
            $data = self::find()->where('adminuser = :user and adminpass = :pass', [":user" => $this->adminuser, ":pass" => md5($this->adminpass)])->one();
            if (is_null($data)) {
                $this->addError("adminpass", "用户名或者密码错误");
            }
        }
    }

    public function login($data)
    {
        if ($this->load($data) && $this->validate()) {
            $lifetime = $this->rememberMe ? 24*3600 : 0;
            $session = Yii::$app->session;
            session_set_cookie_params($lifetime);
            $session['admin'] = [
                'adminuser' => $this->adminuser,
                'isLogin' => 1,
            ];
            $this->updateAll(['logintime' => time(), 'loginip' => ip2long(Yii::$app->request->userIP)], 'adminuser = :user', [':user' => $this->adminuser]);
            return (bool)$session['admin']['isLogin'];
        }
        return false;
    }

}

视图 login.php


                <?php $form=ActiveForm::begin([

                    'fieldConfig'=>[
                        'template'=>'{error}{input}',

                    ],


                ]); ?>

                <?php echo $form->field($model, 'adminuser')->textInput(["class" => "span12", "placeholder" => "管理员账号"]); ?>
                <?php echo $form->field($model, 'adminpass')->passwordInput(["class" => "span12", "placeholder" => "管理员密码"]); ?>
                <a href="<?php echo yii\helpers\Url::to(['public/seekpassword']); ?>" class="forgot">忘记密码?</a>
                <?php echo $form->field($model, 'rememberMe')->checkbox([
                    'id' => 'remember-me',
                    'template' => '<div class="remember">{input}<label for="remember-me">记住我</label></div>',
                ]); ?>
                <?php echo Html::submitButton('登录', ["class" => "btn-glow primary login"]); ?>
                <?php ActiveForm::end(); ?>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值