zoukankan      html  css  js  c++  java
  • 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 -->
    
  • 相关阅读:
    十大排序算法之选择排序(2)
    十大排序算法之冒泡排序(1)
    2018年年度总结
    敏捷软件开发学习笔记(四)之结构型设计模式
    敏捷软件开发学习笔记(三)之创造型设计模式
    elasticsearch+head+kibana
    闭包函数延迟绑定问题
    初谈dango的post提交csrf设置和文件上传
    浏览器的同源策略,及如可跨域
    socket并发通信的几种方式
  • 原文地址:https://www.cnblogs.com/jami918/p/3058562.html
Copyright © 2011-2022 走看看