رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
کدامنیتی
#1
باسلام

من از سیستم کد امنیتی خود فریمورک استفاده کردم ولی وقتی روی ورود کلیک میکنم درست حساب میکنه ولی وقتی میخواد لاگین کنه میگه اشتباه هستش یعنی بعداز زدن ورود کدکپچا تغییر میکنه و کدامنیتی رو تایید نمیکنه.

کنترلر:
'captcha' => [
                'class' => 'yiicaptchaCaptchaAction',
                'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
                'transparent'=>true,
                'minLength'=>3,
                'maxLength'=>4
            ],
model:
<?php









class LoginForm extends Model
{
   /** @var string User's email or username */
   public $login;

   /** @var string User's plain password */
   public $password;

   /** @var string Whether to remember the user */
   public $rememberMe = false;

   /** @var dektriumusermodelsUser */
   protected $user;

   /** @var dektriumuserModule */
   protected $module;

   /** @var Finder */
   protected $finder;
   /** @var Captcha */
   public $verifyCode;
   /**
    * @param Finder $finder
    * @param array $config
    */
   public function __construct(Finder $finder, $config = [])
   {
       $this->finder = $finder;
       $this->module = Yii::$app->getModule('user');
       parent::__construct($config);
   }

   /** @inheritdoc */
   public function attributeLabels()
   {
       return [
            'login'      => Yii::t('user', 'Login'),
            'password'   => Yii::t('user', 'Password'),
            'rememberMe' => Yii::t('user', 'Remember me next time'),
            'verifyCode' => Yii::t('user', 'Captcha'),
        ];
   }

   /** @inheritdoc */
   public function rules()
   {
       return [
           'requiredFields' => [['login', 'password'], 'required'],
           'loginTrim' => ['login', 'trim'],
           'passwordValidate' => ['password', function ($attribute) {
                if ($this->user === null || !Password::validate($this->password, $this->user->password_hash)) {
                    $this->addError($attribute, Yii::t('user', 'Invalid login or password'));
                }
            }],
           'confirmationValidate' => ['login', function ($attribute) {
                if ($this->user !== null) {
                    $confirmationRequired = $this->module->enableConfirmation && !$this->module->enableUnconfirmedLogin;
                    if ($confirmationRequired && !$this->user->getIsConfirmed()) {
                        $this->addError($attribute, Yii::t('user', 'You need to confirm your email address'));
                    }
                    if ($this->user->getIsBlocked()) {
                        $this->addError($attribute, Yii::t('user', 'Your account has been blocked'));
                    }
                }
            }],
           'rememberMe' => ['rememberMe', 'boolean'],
           ['verifyCode', 'captcha'],
       ];
   }

   /**
    * Validates form and logs the user in.
    * @return boolean whether the user is logged in successfully
    */
   public function login()
   {
       if ($this->validate()) {
           return Yii::$app->getUser()->login($this->user, $this->rememberMe ? $this->module->rememberFor : 0);
       } else {
           return false;
       }
   }

   /** @inheritdoc */
   public function formName()
   {
       return 'login-form';
   }

   /** @inheritdoc */
   public function beforeValidate()
   {
       if (parent::beforeValidate()) {
           $this->user = $this->finder->findUserByUsernameOrEmail($this->login);
           return true;
       } else {
           return false;
       }
   }
}

view :
 <?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [
                        'captchaAction' => ['/site/captcha']
                   ]) ?>
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان