با سلام
من طبق آموزش هایی که تو قسمت آموزش جامع yii بود رفتم جلو همه چیز درست هست فرم register بدرستی کار میکنه و پسوردها هم به صورت هش شده در دیتابیس ذخیره میشن ولی هنگام لاگین کردن پیغام زیر رو میگیرم عکس رو ضمیمه کردم
مدل Users و LoginForm رو هم کدهاشو براتون در زیر می نویسم ممکن هست راهنمایی بفرمایید مشکل از چیه؟
متشکر
Users.php
LoginForm.php
من طبق آموزش هایی که تو قسمت آموزش جامع yii بود رفتم جلو همه چیز درست هست فرم register بدرستی کار میکنه و پسوردها هم به صورت هش شده در دیتابیس ذخیره میشن ولی هنگام لاگین کردن پیغام زیر رو میگیرم عکس رو ضمیمه کردم
مدل Users و LoginForm رو هم کدهاشو براتون در زیر می نویسم ممکن هست راهنمایی بفرمایید مشکل از چیه؟
متشکر
Users.php
<?php namespace appmodels; use Yii; use yiiwebIdentityInterface; /** * This is the model class for table "users". * * @property integer $id * @property string $fullname * @property string $address * @property string $email * @property string $mobile * @property string $postcode * @property string $user * @property string $pass * @property integer $confirmed * * @property Orders[] $orders */ class Users extends yiidbActiveRecord implements yiiwebIdentityInterface { public $pass_repeat; public $p; private $_oldpass; public $authKey; public $password; /** * @inheritdoc */ public static function tableName() { return 'users'; } /** * @inheritdoc */ public function rules() { return [ [['fullname', 'address', 'email', 'mobile', 'postcode', 'user', 'pass', 'confirmed'], 'required'], [['address'], 'string'], [['email'], 'email'], ['pass_repeat', 'required' , 'on' =>'register'], [['mobile'], 'match' ,'pattern' => '#^0?9[0-3][0-9]{8}$#'], [['confirmed'], 'integer'], [['fullname', 'email', 'user', 'pass'], 'string', 'max' => 255], [[ 'postcode'], 'string', 'max' => 10], ['pass_repeat' , 'compare' , 'compareAttribute' => 'pass' , 'message' => 'Password and Confirm Password Must be Match!' ,'on' =>'register'], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => 'ID', 'fullname' => 'Fullname', 'address' => 'Address', 'email' => 'Email', 'mobile' => 'Mobile', 'postcode' => 'Postcode', 'user' => 'Username', 'pass' => 'Password', 'confirmed' => 'Confirmed', 'pass_repeat' => 'Password Repeat', ]; } /** * @return yiidbActiveQuery */ public static function findIdentityByAccessToken($token, $type = null) { return null; // TODO: Implement findIdentityByAccessToken() method. } public static function findIdentity($id) { $model=self::findOne($id); return $model ? new static($model) : null; } public function getId() { return $this->id ; // TODO: Implement getId() method. } public function getAuthKey() { return $this->authKey; // TODO: Implement getAuthKey() method. } public function validateAuthKey($authKey) { return $this->authKey == $authKey; // TODO: Implement validateAuthKey() method. } public function getOrders() { return $this->hasMany(Orders::className(), ['user_id' => 'id']); } public function validatePassword($password) { return Yii::$app->security->validatePassword($password , $this->pass); } } public function afterFind() { $this->pass = $this->_oldpass; return parent::afterFind(); } public function beforeSave($insert) { if (trim($this->pass !== '') || $this->pass != $this->_oldpass){ $this->pass = Yii::$app->security->generatePasswordHash($this->pass); } return parent::beforeSave($insert); } }
LoginForm.php
<?php namespace appmodels; use Yii; use yiibaseModel; use appmodelsUsers; /** * LoginForm is the model behind the login form. * * @property User|null $user This property is read-only. * */ class LoginForm extends Model { public $username; public $password; public $rememberMe = true; private $_user = false; /** * @return array the validation rules. */ public function rules() { return [ // username and password are both required [['username', 'password'], 'required'], // rememberMe must be a boolean value ['rememberMe', 'boolean'], // password is validated by validatePassword() ['password', 'validatePassword'], ]; } /** * Validates the password. * This method serves as the inline validation for password. * * @param string $attribute the attribute currently being validated * @param array $params the additional name-value pairs given in the rule */ public function validatePassword($attribute, $params) { if (!$this->hasErrors()) { $user = $this->getUser(); if (!$user || !$user->validatePassword($this->password)) { $this->addError($attribute, 'Incorrect username or password.'); } } } /** * Logs in a user using the provided username and password. * @return bool whether the user is logged in successfully */ public function login() { if ($this->validate()) { return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600*24*30 : 0); } return false; } /** * Finds user by [[username]] * * @return User|null */ public function getUser() { if ($this->_user === false) { $this->_user = Users::findOne([ 'LOWER(user)' => strtolower($this->username) , 'confirmed' => 1]); } return $this->_user; } }