yii 驗證碼的使用和驗證過程,yii驗證碼驗證過程_PHP教程

來源:互聯網
上載者:User

yii 驗證碼的使用和驗證過程,yii驗證碼驗證過程


如果要實現這個過程的話,需要幾個步驟

第一步就是controller的操作

在要操作的控制器中添加如下代碼:

public function actions(){return array( // captcha action renders the CAPTCHA image displayed on the contact page'captcha'=>array('class'=>'CCaptchaAction','backColor'=>0xFFFFFF, 'maxLength'=>'8', // 最多產生幾個字元'minLength'=>'7', // 最少產生幾個字元'height'=>'40','width'=>'230',), ); }public function accessRules(){return array(array('allow','actions'=>array('captcha'),'users'=>array('*'),),);}

  

第二步就是view的操作

在要顯示驗證碼的地方添加如下代碼:

widget('CCaptcha',array('showRefreshButton'=>true,'clickableImage'=>false,'buttonLabel'=>'重新整理驗證碼','imageOptions'=>array('alt'=>'點擊換圖','title'=>'點擊換圖','style'=>'cursor:pointer','padding'=>'10'))); ?>


第三步就是LoginForm的操作

'登入帳號不可為空'),array('password','required','message'=>'密碼不可為空'),array('verifyCode','required','message'=>'驗證碼不可為空'),array('verifyCode','captcha', 'on'=>'login','allowEmpty'=>!Yii::app()->admin->isGuest),// rememberMe needs to be a booleanarray('rememberMe', 'boolean'),// password needs to be authenticatedarray('password', 'authenticate'),);}/*** Declares attribute labels.*/public function attributeLabels(){return array('rememberMe'=>'下次記住我','verifyCode' =>'驗證碼');}/*** Authenticates the password.* This is the 'authenticate' validator as declared in rules().*/public function authenticate($attribute,$params){if(!$this->hasErrors()){$this->_identity=new UserIdentity($this->username,$this->password);if(!$this->_identity->authenticate())$this->addError('password','帳號或密碼錯誤.');}}public function validateVerifyCode($verifyCode){if(strtolower($this->verifyCode) === strtolower($verifyCode)){return true;}else{$this->addError('verifyCode','驗證碼錯誤.');}}/*** Logs in the user using the given username and password in the model.* @return boolean whether login is successful*/public function login(){if($this->_identity===null){$this->_identity=new UserIdentity($this->username,$this->password);$this->_identity->authenticate();}if($this->_identity->errorCode===UserIdentity::ERROR_NONE){$duration=$this->rememberMe ? 3600*24*30 : 0; // 30 daysYii::app()->user->login($this->_identity,$duration);return true;}else{return false;}}}

  

第四步,實現驗證的過程,那麼具體的查看我自己的寫的一個方式,在第三部已經寫好了
validateVerifyCode就是啦,可以在controller裡面調用

我的調用如下:

public function actionLogin(){$model=new LoginForm;if(isset($_POST['ajax']) && $_POST['ajax']==='login-form'){echo CActiveForm::validate($model);Yii::app()->end();}if(isset($_POST['LoginForm'])){$model->attributes=$_POST['LoginForm'];// validate user input and redirect to the previous page if validif($model->validate() && $model->validateVerifyCode($this->createAction('captcha')->getVerifyCode()) && $model->login()){$this->redirect(CController::createUrl('default/index'));}}$this->render('login',array('model'=>$model));}

  

http://www.bkjia.com/PHPjc/1072009.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1072009.htmlTechArticleyii 驗證碼的使用和驗證過程,yii驗證碼驗證過程 如果要實現這個過程的話,需要幾個步驟 第一步就是controller的操作 在要操作的控制器中...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.