Проверка электронной почты в системе yii

Я хочу проверить пользователя, когда он нажимает произвольный сгенерированный URL.

Дайте мне решение для этих двух процессов.

1.Какие правила конфигурации URL-менеджера для получения хэша (строки и числа) из запроса URL-адреса?

2. Как я могу сравнить значение хэша в URL с моим хеш-значением в базе данных на контроллере / Action?

Код для отправки электронной почты (он работает нормально)

protected function afterSave() { $activation_url = Yii::app()->createAbsoluteUrl('SignUp/Activate',array('activate_link'=>$this->activate_link)); Yii::import('ext.yii-mail.YiiMailMessage'); $message = new YiiMailMessage; $message->setBody($activation_url); $message->subject = 'Hello hell'; $message->addTo($this->email); $message->from = Yii::app()->params['adminEmail']; Yii::app()->mail->send($message); return true; } 

Код в контроллере

 public function actionActivate($activation) { $model= Signup::model()->findByAttributes(array( 'activate_link' => $activation )); if ($model === null) $this->redirect('index.php'); else $model->user_status = 1; $model->save(); $this->redirect('index.php'); //redirect / flash / login whatever 

}

и текущая конфигурация URLManager

 'urlManager'=>array( 'urlFormat'=>'path', 'showScriptName'=>false, 'rules'=>array( '<controller:\w+>/<id:\d+>' => '<controller>/view', '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', '<controller:\w+>/<action:\w+>' => '<controller>/<action>', ), ), 

Solutions Collecting From Web of "Проверка электронной почты в системе yii"

Внесите изменения в свой менеджер URL, как показано

 'urlManager'=>array( //HK_DEVELOPER NR:CHANGED TO GET TO GET THE URL IN DESIRED FORMAT 'urlFormat'=>'get', 'rules'=>array( '<controller:\w+>/<id:\d+>'=>'<controller>/view', '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', ), ), 

И пример подтверждения действия. Отправьте электронное письмо в формате получения параметров с ключом в URL-адресе и получите этот ключ в действии, как я сделал в passkey

 public function actionConfirm(){ //HK_DEVELOPER_NR:This action will confirm the user and change status from not authorize to authorized $passkey=$_GET['key']; $details=User::model()->findByAttributes(array('confirmationCode'=>$passkey)); if(count($details)>=1) { if($details['userStatusId']==2){ //CHECK IF AUTHORIZED REDIRECT TO PROFILE VIEW $url=Yii::app()->createUrl('site/login&joinbdp=false'); $this->redirect($url);//USER CLICKS ON THE REGISTERATION LINK TWICE }else{ $register=new Registerationconf; $value=$details['userId']; $register->userId=$value; $register->IPAddress=Yii::app()->request->userHostAddress; $register->confirmationTime=new CDbExpression('NOW()'); $register->save(); //CHANGE STATUS FROM NOT AUTHORIZED TO AUTHORIZED $post=User::model()->updateAll(array('userStatusId'=>'2'), 'confirmationCode=:confirmationCode',array(':confirmationCode'=>$passkey)); $this->render('sucess'); } }else { //IF USER IS REMOVED AND TRIES TO ACTIVATE THE LINK AGAIN echo "Please use valid URL. "; } } на public function actionConfirm(){ //HK_DEVELOPER_NR:This action will confirm the user and change status from not authorize to authorized $passkey=$_GET['key']; $details=User::model()->findByAttributes(array('confirmationCode'=>$passkey)); if(count($details)>=1) { if($details['userStatusId']==2){ //CHECK IF AUTHORIZED REDIRECT TO PROFILE VIEW $url=Yii::app()->createUrl('site/login&joinbdp=false'); $this->redirect($url);//USER CLICKS ON THE REGISTERATION LINK TWICE }else{ $register=new Registerationconf; $value=$details['userId']; $register->userId=$value; $register->IPAddress=Yii::app()->request->userHostAddress; $register->confirmationTime=new CDbExpression('NOW()'); $register->save(); //CHANGE STATUS FROM NOT AUTHORIZED TO AUTHORIZED $post=User::model()->updateAll(array('userStatusId'=>'2'), 'confirmationCode=:confirmationCode',array(':confirmationCode'=>$passkey)); $this->render('sucess'); } }else { //IF USER IS REMOVED AND TRIES TO ACTIVATE THE LINK AGAIN echo "Please use valid URL. "; } }