1

ランダムに生成された URL をクリックしたときにユーザーを確認したい。

これら2つのプロセスの解決策を教えてください。

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

        ),
    ),
4

1 に答える 1

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. ";
        }
    }
于 2013-07-06T13:11:23.927 に答える