[Yii 1][Solucionado]Problema en el recuperar contrasena de usuario

Hola,

he instalado phpmailer, he creado una classe llamada InviaEmail y la he puesta en la carpea models (todo esto siguendo un tutorial en YouTube).

Mi classe:




<?php

Yii::import('application.extensions.phpmailer.JPhpMailer');

class InviaEmail{

public function Invia_Email(array $from, array $to, $subject, $message)

{

        $mail = new JPhpMailer;

        $mail->IsSMTP();

        $mail->Host = 'localhost';

        $mail->SetFrom($from[0],$from[1]);

        $mail->Subject = $subject;

        $mail->MsgHTML($message);

        $mail->AddAdress($to[0], $to[1]);

        $mail->send();

        }

}



Luego he creado un formulario llavado recuperopassword (vistas directory site)para que el usuario pueda insertar su username, su contrasena y el codico captcha:




<?php

$this->pageTitle = 'Recupero Password';

$this->breadcrumbs = array('Recupero Password');

echo $msg;

?>

<div class="form">

<?php 

$form=$this->beginWidget('CActiveForm',

array(

'method'=>'POST',

'action'=> Yii::app()->createUrl('site/recuperopassword'),

'enableClientValidation'=>true,

'clientOptions'=>array(

'validateOnSubmit'=>true,

),

));

?>

<div class="table_box">


<table class="table" style="width: 45%; margin: auto;">

                <tbody>

                        <tr>

                                <td colspan=2 class="table_info_header table_first_lr"><center>Recupero Password</center></td>

                        </tr>

<tr>

<td class="table_info_desc">

<?php 

echo $form->labelEx($model, 'username');

?>

</td>


<td class="table_info_data">

<?php

echo $form->textField($model, 'username');

echo $form->error($model, 'username', array('class'=>'text-error'));

?>

</td>

</tr>


<tr>

<td class="table_info_desc">

<?php echo $form->labelEx($model, 'email');?>

</td>


<td class="table_info_data">

<?php

echo $form->textField($model, 'email');

echo $form->error($model, 'email', array('class'=>'text-error'));

?>

</td>

</tr>


<tr>

<td class="table_info_desc">

<?php echo $form->labelEx($model, 'Secure Code');?>

<?php $this->widget('CCaptcha', array('buttonLabel'=>'Rigenera Codice'));

?>

</td>


<td class="table_info_data">

<div class="text-info">

Inserisci Secure Code

</div>

<?php echo $form->textField($model, 'captcha');?>


<?php 

echo $form->error($model, 'captcha', array('class'=>'text-error'));

?>

</td>

</tr>


<tr class="table_data_footer">

           <td colspan=2 class="table_last_lr">

<center><?php echo CHtml::submitButton('Recupero Password', array('class'=>'btn btn-primary'));?>

<?php $this->endWidget();?></center>

</td>

</tr>

</tbody>

</table>

</div>



Despues he creado adentro de la carpeta models una classe que extende la classe CFormModel y que sirve por la validacion del los datos insertados en el formulario, y la he llamada RecuperoPassword:




<?php

class Recuperopassword extends CFormModel{

public $username;

public $email;

public $captcha;


public function rules(){

        return array(

        array(

        'username, email, captcha',

        'required',

        'message' => 'Campo obbligatorio',

        ),

        array(

        'username',

        'match',

        'pattern' => '/^[a-z0-9_]+$/i',

        'message'=>'Inserire solo lettere e numeri',

        ),

        array

        (

        'email',

        'email',

        'message'=>'Formato email NON corretto',

        ),

        array(

        'captcha',

        'captcha',

        'message'=>'Secure Code NON corretto',

        ),

        );

        }


}



Al final in SiteController he creado la accion para hacer el controle de lo que llega por POST y enviar una email a el usuario con su contrsena.




  //RECUPERO PASSWORD FORM

        public function actionRecuperopassword()

        {

                $model=new RecuperoPassword;

                $msg='';

                

                if (isset($_POS["Recuperopassword"]))

                {

                        $model->attributes=$_POST['Recuperopassword'];

                        if(!$model->validate())

                        {

                        $msg="<strong class='text-error'>Errore durante l1' invio del Form</strong>";   

                                }

                                else

                                {

                                        $connessione=Yii::app()->db;

                                        //verifica se esiste l username

                                        $ricerca="SELECT username, email FROM user WHERE";

                                        $ricerca = "SELECT username, email FROM user WHERE ";

					$ricerca .= "username='".$model->username."' AND email='$model->email'";

					$risultato =  $connessione->createCommand($ricerca);


					$righe = $risultato->query();

					$esiste = false;

					

					foreach ($righe as $riga)

					{

						$esiste = true;

						}

						//se l' username esiste

						if ($esiste === true)

						{

							//Trova la sua password

					$ricerca = "SELECT password FROM user WHERE ";

					$ricerca .= "username='".$model->username."' AND email='".$model->email."'";  

                                        

                                        $risultato=$connessione->createCommand($ricerca)->query();

                                                

                                        $risultato->bindColumn(1, $password);

                                        

                                        while($risultato->read()!==false)

                                        {

                                                $password=$password;

                                        }

                                        

                                        $email=new InviaEmail;

                                        

                                        $subject="Hai richiesto il recupero della tua password";

                                        $subject.=Yii::app()->name;

                                        $message="Benvenuto" .$model->username. "questa è la tua password";

                                        $message.=$password;

                                        $message.= "<br /><br />";

                                        $message.="<a href='http://localhost/sito/site/login/'>Vai al Sito</a>";

                                        

                                        $email->Invia_Email

                                        (

                                                array(Yii::app()->params['adminEmail'], Yii::app()->name),

                                                array($model->email, $model->username),


                                                $subject,

                                                $message

                                                );

                                                $msg="<strong class='text-info'>Ti abbiamo inviato una email con la tua password</strong>";

                                  }

                                  else{

                                          $msg="<strong class='text-error'>Non è stato trovato nessun utente con le credenziali inserite nel form. Contatta l\' amministratore</strong>";

                                          }

                         }

                }

                

                

                $this->render('recuperopassword', array('model'=>$model, 'msg'=>$msg));

                }



Cuando se hace click en el boton para enviar el formulario,no pasa nada.

Solo parece que se hace un refresh de la pagina

Estoy haciendo pruebas en local con xampp y MercuryMail con account gmail.

Si entendo enviar una mail desde MercuryMail todo sale bien.

Si, al reves, entento desde el formulario, no pasa nada.

Alguien puede ayudarme por favor? :( Gracias!!!

Hola, lo he arreglado,

faltaba una S in $_POST aqui:




.........................


if (isset($_POS["Recuperopassword"]))


............................


                        if(!$model->validate())



Lo he revisado muchas vezes y aun no abia visto…desculpen!!!