yii注册
注册会使用验证码,下面是验证码的使用方法:
Yii中如何使用验证码: 在Model层的文件中插入 public $verifyCode; 在rules()中插入 array('verifyCode', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements()), 在attributeLabels()中插入 'verifyCode' =>'验证码'; 在Controller层的文件中插入 public function actions() { return array( // captcha action renders the CAPTCHA image displayed on the contact page 'captcha'=>array( 'class'=>'CCaptchaAction', 'backColor'=>0xFFFFFF, ), ); } 最后在View层的文件中插入 <?php if(CCaptcha::checkRequirements()): ?> <div class="row"> <?php echo $form->labelEx($model,'verifyCode'); ?> <div> <?php $this->widget('CCaptcha'); ?> <?php echo $form->textField($model,'verifyCode');?> </div> <div class="hint">请输入验证码中的图片 <br/>不区分大小写 </div> <?php echo $form->error($model,'verifyCode'); ?> </div> <?php endif;?>
C:TestController.php/actionReg方法
public function actionReg() { $model=new TestReg('reg'); if(isset($_POST['TestReg'])) { $aa=$model->attributes = $_POST['TestReg']; $model->validate(); //$model->getErrors(); if($model->save()) { $this->redirect(array('test/login')); }else{echo '333';} } $this->render('reg',array('model'=>$model)); }
M:TestReg.php模型
<?php /* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * Description of TestLogin * * @author Administrator */ class TestReg extends CActiveRecord{ public $username; public $password; public $password2; public $email; public $verifyCode; /** * Returns the static model of the specified AR class. * @param string $className active record class name. * @return User the static model class */ public static function model($className=__CLASS__) { return parent::model($className); } /** * @return string the associated database table name */ public function tableName() { return 'tbl_user'; } /** * @return array validation rules for model attributes. */ public function rules() { // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( array('username,email', 'unique'), array('username, password,password2, email,verifyCode', 'required'), array('username password', 'length', 'min'=>3, 'max'=>18), array('password2', 'compare', 'compareAttribute' => 'password','on'=>'reg'),
//这里的'on'=>'reg'与控制器中$model=new TestReg('reg');相关。 //array('password2', 'compare', 'compareAttribute' => 'password'), array('verifyCode', 'captcha'), array('email', 'length','max'=>128), // The following rule is used by search(). // Please remove those attributes that should not be searched. //array('id, username, password, email', 'safe', 'on'=>'search'), ); } /** * @return array customized attribute labels (name=>label) */ public function attributeLabels() { return array( 'username' => 'Username', 'password' => 'Password', 'password2' => 'Password Again', 'email' => 'Email', 'verifyCode' =>'VerifyCode', ); } protected function beforeSave() { if($this->isNewRecord) { $this->password = md5($this->password); } return parent::beforeSave(); } } ?>
V:reg.php视图
<div class="form"> <div class="row"> <?php echo $form->label($model,'username'); ?> <?php echo $form->textField($model,'username') ?> <?php echo $form->error($model,'username'); ?> </div> <div class="row"> <?php echo $form->label($model,'password'); ?> <?php echo $form->passwordField($model,'password') ?> <?php echo $form->error($model,'password'); ?> </div> <div class="row"> <?php echo $form->label($model,'password2'); ?> <?php echo $form->passwordField($model,'password2') ?> <?php echo $form->error($model,'password2'); ?> </div> <div class="row"> <?php echo $form->label($model,'email'); ?> <?php echo $form->textField($model,'email'); ?> <?php echo $form->error($model,'email'); ?> </div> <div class="row"> <?php echo $form->labelEx($model,'verifyCode'); ?> <?php echo $form->textField($model,'verifyCode');?> <div><?php $this->widget('CCaptcha'); ?></div> <?php echo $form->error($model,'verifyCode'); ?> </div> <div class="row submit"> <?php echo CHtml::submitButton('注册',array('class'=>'btn btn-large')); ?> </div> <?php $this->endWidget(); ?> </div><!-- form -->