2012-11-28 29 views
2

在yii我创建忘记密码功能。为此用户输入电子邮件id.If此电子邮件ID是正确的,然后我想从数据库中检索securityQuestion ID并显示该问题user.if他的回答是正确的,然后密码重置链接将发送到用户的电子邮件ID。在控制器我做了行动在yii如何发送密码重置链接

public function ActionForget{if(isset($_POST['email'])) 
     { $record=User::model()->find(array(
     'select'=>'primaryEmail', 
     'condition'=>'PrimaryEmail=:email', 
     'params'=>array(':email'=>$_POST['email'])) 
      ); if($record===null) { 
     $error = 'Email invalid'; 
     } else { 
      $mailer = Yii::createComponent('application.extensions.mailer.EMailer'); 
      $mailer->IsSMTP(); 
      $mailer->IsHTML(true); 
      $mailer->SMTPAuth = true; 
      $mailer->SMTPSecure = "ssl"; 
      $mailer->Host = "smtp.gmail.com"; 
      $mailer->Port = 465; 
      $mailer->CharSet = 'UTF-8'; 
      $mailer->Username = "[email protected]"; 
      $mailer->Password = "abc"; 
      $mailer->From = "[email protected]"; 
      $mailer->FromName = "Balaee.com"; 
      $mailer->AddAddress($record); 
      $mailer->Subject = "welcome to Balaee"; 
      $mailer->IsHTML(true); 
      $mailer->Body = "<h1>Thanks to showing interest </h1><br>click on link for       other detail ".$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
if($mailer->Send()) {echo "Please check mail";} 
else {echo "Fail to send your message!"; }}} 
else{ $this->render('emailForm'); //show the view with the password field}} 

我有password.php作为视图文件进入主电子邮件ID和提交按钮

 <?php $form=$this->beginWidget('CActiveForm', array(
     'id'=>'email-form', 
      'enableClientValidation'=>true, 
      )); 
      echo CHtml::textField('email'); 
      echo CHtml::submitButton('Send'); 
      $this->endWidget(); 

但用户submiiting主电子邮件ID之后,没有任何动作,地点。所以可以请别人告诉我我需要做什么更改

+1

请通过将echo语句调试代码,并检查其中控制休息,然后发现问题。 – Hemc

+0

我现在正在逐步进行。如果电子邮件ID正确的,那么我想从用户表retrive该用户的securityQuestionid以显示安全问题他。我创造了查询AS-如果(isset($ _ POST [“邮件”])){ $记录=用户1: :模型() - >查找(阵列( '选择'=> 'primaryEmail', '状态'=> 'primaryEmail =:电子邮件', 'PARAMS'=>数组( ':电子邮件'=> $ _ POST [ 'email'])));如果(!$ record === null) {echo“email exists”; $ ID =用户1 ::模型() - > findByAttributes(阵列( '用户id'=> $ record->用户id)); $ SQID =用户1 ::模型() - > findByAttributes(阵列( 'securityQuestionId'=> $ record-> securityQusetionId)); echo $ sqid;}} bt不工作 –

+0

一次又一次地发布不会帮助你,试着写一些代码。谢谢。 –

回答

0

不应该控制器方法的名称是actionForgot而不是ActionForgot。 PHP是区分大小写的,当你渲染页面发送模型像它this->render->('emailForm',$email)其中$email是你的型号名称

+0

PHP是不区分大小写。 – diesonne

0

好吧,我喜欢的开始,这里是一些上述现有代码的修复。

但是,一旦您成功发送电子邮件,您的计划是什么?看到现有的代码会为您提供一个看起来像这样的网址http://yoursite.com/yourapp/user/forget,这会让您回到您输入电子邮件的形式,从而创建一个巨大的循环。

查看链接应实际上创建验证,从而使用户访问其用户记录。您需要一些其他功能来验证并允许更改密码。

<code> 

public function actionForget() { 
     if(isset($_POST['email'])) { 
     $record=User::model()->findByAttributes(array('email' => Yii::app()->request->getPost('email'))); 
     if ($record != NULL) { 
       $mailer = Yii::createComponent('application.extensions.mailer.EMailer'); 
       $mailer->IsSMTP(); 
       $mailer->IsHTML(true); 
       $mailer->SMTPAuth = true; 
       $mailer->SMTPSecure = "ssl"; 
       $mailer->Host = "smtp.gmail.com"; 
       $mailer->Port = 465; 
       $mailer->CharSet = 'UTF-8'; 
       $mailer->Username = "[email protected]"; 
       $mailer->Password = "[email protected]"; 
       $mailer->From = "[email protected]"; 
       $mailer->FromName = "HQ-DEV-01"; 
       $mailer->AddAddress($_POST['email']); 
       $mailer->Subject = "welcome to CES Document Site"; 
       $mailer->IsHTML(true); 
       $mailer->Body = "<h1>Thanks, please</h1><br> 
          click on link for other detail 
          ".$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 

          if($mailer->Send()) { 
        echo "Please check your email"; 
       } 
       else { 
        echo "Fail to send your message!"; 
       } 

     } else { 
      echo 'Email invalid'; 
    } 
     else { 
     $this->render('password'); 
     Yii::app()->user->setFlash('error', "Email is not valid!"); 
     //echo 'Email invalid'; 
    } 

    } 
else{ $this->render('password'); //show the view with the password field}} 
     Yii::app()->user->setFlash('info', "Enter a valid e-mail!"); 
} 

}

相关问题