6-2用户功能实现 用户数据表没关联上
来源:6-2 会员中心功能实现

慕设计5795786
2017-04-03
讲的有点快,但是实现了用户的邮箱注册,也输出了用户的name和password ,可以用这2个来进行登录,但是后台用户数据列表没有显示出来,在数据库中也没有。我是不是没有把信息录入进数据库。讲的有点快,步骤都是模仿前面的管理员步骤做的。觉得既然输出了用户名和密码,为什么没有写入数据库中,没有写入数据库也可以登录,很奇怪,不知道错在了哪里
写回答
3回答
-
把你的代码粘出来我看看
042017-04-04 -
慕设计5795786
提问者
2017-04-03
<?php namespace app\models; use yii\db\ActiveRecord; use Yii; class User extends ActiveRecord { public $repass; public $loginname; public $rememberMe = true; public static function tableName() { return "{{%user}}"; } public function rules() { return [ ['loginname', 'required', 'message' => '登录用户名不能为空', 'on' => ['login']], ['openid', 'required', 'message' => 'openid不能为空', 'on' => ['qqreg']], ['username', 'required', 'message' => '用户名不能为空', 'on' => ['reg', 'regbymail', 'qqreg']], ['openid', 'unique', 'message' => 'openid已经被注册', 'on' => ['qqreg']], ['username', 'unique', 'message' => '用户已经被注册', 'on' => ['reg', 'regbymail', 'qqreg']], ['useremail', 'required', 'message' => '电子邮件不能为空', 'on' => ['reg', 'regbymail']], ['useremail', 'email', 'message' => '电子邮件格式不正确', 'on' => ['reg', 'regbymail']], ['useremail', 'unique', 'message' => '电子邮件已被注册', 'on' => ['reg', 'regbymail']], ['userpass', 'required', 'message' => '用户密码不能为空', 'on' => ['reg', 'login', 'regbymail', 'qqreg']], ['repass', 'required', 'message' => '确认密码不能为空', 'on' => ['reg', 'qqreg']], ['repass', 'compare', 'compareAttribute' => 'userpass', 'message' => '两次密码输入不一致', 'on' => ['reg', 'qqreg']], ['userpass', 'validatePass', 'on' => ['login']], ]; } public function validatePass() { if (!$this->hasErrors()) { $loginname = "username"; if (preg_match('/@/', $this->loginname)) { $loginname = "useremail"; } $data = self::find()->where($loginname.' = :loginname and userpass = :pass', [':loginname' => $this->loginname, ':pass' => md5($this->userpass)])->one(); if (is_null($data)) { $this->addError("userpass", "用户名或者密码错误"); } } } public function attributeLabels() { return [ 'username' => '用户名', 'userpass' => '用户密码', 'repass' => '确认密码', 'useremail' => '电子邮箱', 'loginname' => '用户名/电子邮箱', ]; } public function reg($data, $scenario = 'reg') { $this->scenario = $scenario; if ($this->load($data) && $this->validate()) { $this->createtime = time(); $this->userpass = md5($this->userpass); if ($this->save(false)) { return true; } return false; } return false; } public function getProfile() { return $this->hasOne(Profile::className(), ['userid' => 'userid']); } public function login($data) { $this->scenario = "login"; if ($this->load($data) && $this->validate()) { //做点有意义的事 $lifetime = $this->rememberMe ? 24*3600 : 0; $session = Yii::$app->session; session_set_cookie_params($lifetime); $session['loginname'] = $this->loginname; $session['isLogin'] = 1; return (bool)$session['isLogin']; } return false; } public function regByMail($data) { $data['User']['username'] = 'imooc_'.uniqid(); $data['User']['userpass'] = uniqid(); $this->scenario = 'regbymail'; if ($this->load($data) && $this->validate()) { $mailer = Yii::$app->mailer->compose('createuser', ['userpass' => $data['User']['userpass'], 'username' => $data['User']['username']]); $mailer->setFrom('这里是我的163邮箱@163.com'); $mailer->setTo($data['User']['useremail']); $mailer->setSubject('慕课商城-新建用户'); if ($mailer->send() && $this->reg($data, 'regbymail')) { return true; } } return false; } } 这是User.php
012017-04-03 -
慕设计5795786
提问者
2017-04-03
<?php namespace app\controllers; use yii\web\Controller; use app\models\User; use Yii; class MemberController extends Controller { public function actionAuth() { $this->layout = 'layout2'; // if (Yii::$app->request->isGet) { // $url = Yii::$app->request->referrer; // if (empty($url)) { // $url = "/"; // } // Yii::$app->session->setFlash('referrer', $url); // } $model = new User; if (Yii::$app->request->isPost) { $post = Yii::$app->request->post(); if ($model->login($post)) { $url = Yii::$app->session->getFlash('referrer'); return $this->redirect($url); } } return $this->render("auth", ['model' => $model]); } public function actionLogout() { Yii::$app->session->remove('loginname'); Yii::$app->session->remove('isLogin'); if (!isset(Yii::$app->session['isLogin'])) { return $this->goBack(Yii::$app->request->referrer); } } public function actionReg() { $model = new User; if (Yii::$app->request->isPost) { $post = Yii::$app->request->post(); if ($model->regByMail($post)) { Yii::$app->session->setFlash('info', '电子邮件发送成功'); } } $this->layout = 'layout2'; return $this->render('auth', ['model' => $model]); } }
这是MemberController.php
00
相似问题