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');
}