Php 通过电子邮件发送验证码,但不在Yii上激活

Php 通过电子邮件发送验证码,但不在Yii上激活,php,yii,Php,Yii,我的问题是从电子邮件代码激活帐户。当前功能发送电子邮件代码,但未激活即登录(创建新用户,无需单击验证链接) 这是我的控制器代码- public function actionSignup() { $model=new User; if(isset($_POST['User'])) { $model->attributes=$_POST['User']; $image=CUploadedFile::getInstance($model

我的问题是从电子邮件代码激活帐户。当前功能发送电子邮件代码,但未激活即登录(创建新用户,无需单击验证链接)

这是我的控制器代码-

public function actionSignup()
{
    $model=new User;

    if(isset($_POST['User']))
    {
        $model->attributes=$_POST['User'];
        $image=CUploadedFile::getInstance($model,'image');

        if($image!=NULL)
        {
            $model->image = $image; 

            $image->saveAs(Yii::getPathOfAlias('webroot').'/images/'.$image);                       
        }

        $model->registration_date = date("Y-m-d H:i:s");

        $model->user_status= 'Disabled';

        $activation_code= mt_rand(0x000000, 0xffffff); 

        $model->activation_code=$activation_code;

        if($model->save())
        {
            $to =$_POST['User']['email']; 

            $User=User::model()->find(
                '"email"=:email', array(':email'=>$to)
            );  

            $subject = "Activate your account on www.polymyositisresearch.org";


            $subject='=?UTF-8?B?'.base64_encode($subject).'?='; 

            echo $comment = 
            "<html>
                <body> 
                    \r\nPlease<a href=".Yii::app()->createAbsoluteUrl("user/signup-confirmation", 
                    array("secure_activation_key"=>$activation_code))." > Click here </a> to activate your account.
                    \r\nThank you.
                </body>
            </html>";


            $headers  = 'MIME-Version: 1.0' . "\r\n";
            $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
            $headers .= 'From: www.polymyositisresearch.org< admin@polymyositisresearch.org>' . "\r\n";

            if(mail($to,$subject,$comment,$headers))
            {
                Yii::app()->user->setFlash('success','An activation email has sent to your email address. 
                Please activate your account and continue to next step on polymyositisresearch.org. Thank you.');
                $this->refresh();
            }
            else
                echo "SMTP Server Error";
        }
        else    
        {
            $model->password = ''; // if the validate failed, clear out the password before re-rendering the form
            $model->verifyPassword = '';
        }
    }

    $this->render('sign-up',array('user'=>$model));
}

非常感谢你的一点帮助。我需要一些指导,点击后验证电子邮件,然后创建新用户

请详细说明您希望得到的帮助以及您当前的问题+您是如何尝试实现目标的Hi mikus我的问题是此功能通过电子邮件发送验证码,但新用户不需要此验证,自动创建新用户而无需验证电子邮件。我需要在单击验证电子邮件后创建新用户。我现在能做什么?如果我理解正确,您需要做的就是在登录期间检查User.User\u状态,如果它是“禁用”的,则拒绝登录。虽然不知道您的登录逻辑是什么样子,但教程中应该会介绍这个主题。嗨,mikus更新了我的状态。请检查在验证之前您必须创建用户模型,因此如果我正确理解您不可能创建的,您只想在他们单击链接时创建用户模型?那是我不能工作的原因。另外,如果您刚刚开始这个项目,我建议您改用Yii2。Yii 1不再推荐用于新项目。
public function actionSignupconfirmation($secure_activation_key)
{   
    $User=User::model()->find(
        'activation_code=:activation_code', array(':activation_code'=>$secure_activation_key)
    );  

    if($User!=NULL)
    {           
        if($User->activation_code==$secure_activation_key)
        {
            $activate_code= mt_rand(0x000000, 0xffffff); 

            $User->activation_code=$activate_code;
            $User->user_status= 'Enabled';

            $User->save(false);

            Yii::app()->user->setFlash('success','Congrats! Your account has been verified successfully. Please login to access your account. Thank you.');
        }
    }
    else
    {
        Yii::app()->user->setFlash('error','Account confirmation unsuccessful. Please try again.');
        //$this->refresh();
    }

    $this->render('signup-confirmation');
}