• 技术文章 >php框架 >YII

    yii中的登录如何实现

    angryTomangryTom2020-02-18 11:01:24原创668

    yii中的登录如何实现

    1、创建数据表shop_admin

    CREATE TABLE `shop_admin` (
      `adminid` int(10) UNSIGNED NOT NULL COMMENT '主键ID',
      `adminuser` varchar(32) NOT NULL DEFAULT '' COMMENT '管理员账号',
      `adminpass` char(32) NOT NULL DEFAULT '' COMMENT '管理员密码',
      `adminemail` varchar(50) NOT NULL DEFAULT '' COMMENT '管理员邮箱',
      `logintime` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '登陆时间',
      `loginip` bigint(20) NOT NULL DEFAULT '0' COMMENT '登陆IP',
      `createtime` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间'
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    1.png

    2、登陆页面

    <?php
    use yii\bootstrap\ActiveForm;
    use yii\helpers\Html;
    $form = ActiveForm::begin([
        'id' => 'abc-form',
        'options' => ['class' => 'form-horizontal'],
    ])?>
    <?= $form->field($model, 'adminuser')->textInput(['placeholder' => "用户名"])->label('账号') ?>
    <?= $form->field($model, 'adminpass')->passwordInput()->label('密码') ?>
    <?= Html::submitButton('提交') ?>
    <?php ActiveForm::end() ?>

    3、控制器

    相关文章教程推荐:yii教程

    <?php
    namespace app\controllers;
    use yii\web\Controller;
    use app\models\Admin;
    use Yii;
     
    class IndexController extends Controller
    {
        public function actionIndex()
        {
    //      不使用布局
            $this->layout = false;
            $model = new Admin;
    //        是否是post提交
            if (Yii::$app->request->isPost) {
    //            获得post提交参数
                $post = Yii::$app->request->post();
                if($model->login($post)){
                    return "登陆成功";
                } else {
                    return "登陆失败";
                }
            } else {
                return $this->render("index", ['model' => $model]);
            }
        }
     
    }

    4、模型

    <?php
    namespace app\models;
    use yii\db\ActiveRecord;
    use Yii;
    class Admin extends ActiveRecord
    {
        public static function tableName()
        {
            return "{{%admin}}";
        }
     
        public function rules()
        {
            return [
                ['adminuser', 'required'],
                ['adminpass', 'required'],
    //           验证密码是否正确
                ['adminpass', 'validatePass']
            ];
        }
     
        public function validatePass()
        {
            if (!$this->hasErrors()) {
    //            判断用户名密码是否正确
                $data = self::find()
                    ->where(['adminuser' => $this->adminuser])
                    ->andwhere(['adminpass' => md5($this->adminpass)])
                    ->one();
                if (is_null($data)) {
                    $this->addError('adminpass', 'adminuser or adminpass error');
                }
            }
        }
        public function login($data)
        {
            if($this->load($data) && $this->validate()) {
    //            登陆信息写入session
                $session = Yii::$app->session;
                $session->open();
                $session->set('adminuser', $this->adminuser);
    //           更新登陆时间和IP
                $this->updateAll(['logintime' => time(), 'loginip' => ip2long(Yii::$app->request->userIP)], ['adminuser' => $this->adminuser]);
                return true;
            }
            return false;
        }
    }

    更多yii编程入门教程,请关注PHP中文网。

    以上就是yii中的登录如何实现的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:yii 登录 实现
    上一篇:yii框架如何配置路由 下一篇:yii运行init.bat报错
    大前端线上培训班

    相关文章推荐

    • yii2验证码样式如何设置• yii2.0判断ios还是安卓• composer如何更新yii2版本• yii框架如何配置路由

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网