2013-07-06 2 views
1

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

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

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

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

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

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>', 

     ), 
    ), 
+0

Вы знаете, это обычный процесс на всех современных веб-сайтах, который проверяет нового пользователя по электронной почте. –

+0

вы написали код для отправки электронной почты или хотите все решение? – Ninad

+1

Привет и добро пожаловать в StackOverflow. Этот сайт не тот, где люди «дают вам решение»; вам нужно продемонстрировать попытку решить проблему и решить проблему с конкретной проблемой. Из-за этого вы, скорее всего, не получите ответа. Пройдите [тур] (http://stackoverflow.com/about) и прочитайте [FAQ по заданию вопросов] (http://stackoverflow.com/help/asking). – Jon

ответ

0

Ма ка изменения в менеджере 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 и получить этот ключ в действии, как я сделал в отмычкой

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. "; 
     } 
    } 
+0

Спасибо, Ninad, за ваши быстрые ответы, позвольте мне попробовать это –

+0

Ninad, это моя структура URL в этом который является ключом и что я должен заменить своей переменной (ключ) http: // localhost/launch/SignUp/Активировать? activate_link = a3406449bbb062254292f76d853c97acf2fa8ff6 –

+0

Эй, ваше решение, окуливающее, как очарование .... спасибо, –

Смежные вопросы