2

通过单击通过电子邮件发送的激活链接来激活用户时,我遇到了问题。

点击激活链接即http://www.example.com/devtest/index.php?r=user/check&activationcode=bc74873d0e3f684d3e6b99a36169a793ee688406然后它重定向到登录页面而不更新数据库。

我认为我的以下控制器代码不适用于位于用户目录的视图文件 check.php。这是我的代码-

用户控制器.php:

public function actionCheck(){$activationcode = Yii::app()->request->getQuery('activationcode');
if(isset($activationcode))
{
  $model = User::model()->findByAttributes(array('activationcode'=>$activationcode));

  if($model !== null)
  {            
    $model->status=1;
    $model->save();Yii::app()->user->setFlash('check','Thank you for register with us');
    $this->refresh();
  }
}

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

}

查看文件 check.php:

 <?php if(Yii::app()->user->hasFlash('check')): ?>
 <div class="flash-success">
   <?php echo Yii::app()->user->getFlash('check'); ?>
 </div>
<?php endif; ?>

我不确定如何在 UserController 中处理 GET URL 操作。另外,我已经通过在 accessRules 中添加单词“检查”进行了测试,但是浏览器显示页面没有正确重定向。

public function accessRules()
    {
            return array(
                    array('allow',  // allow all users to perform 'index' and 'view' actions
                            'actions'=>array('index','create','view','captcha'),
                            'users'=>array('*'),
                    ),);}

任何想法?请给我一个关于我的问题的解决方案。

谢谢,夫人

4

2 回答 2

0

我认为您尚未将 Check 操作添加到您的 accessControl 并允许所有用户使用它。您能否在此处粘贴您的 accessRules 数组代码?

    public function filters() {
    return array(
            'accessControl', 
            );
}

public function accessRules() {
    return array(
        array('allow', // allow all users to perform 
            'actions'=>array('check'),
                'users'=>array('*'),
                ),
于 2012-10-24T11:27:53.697 回答
0

我认为你的模型是空的,所以你不能更新数据库。

我也认为你的行为应该是这样的

public function actionCheck(){$activationcode = null){ 
if(!is_null($activationcode))
{
   $model = User::model()->findByAttributes(array('activationcode'=>$activationcode));

if($model){            
    $model->status=1;
    if($model->save())
       Yii::app()->user->setFlash('check','Thank you for register with us');
    $this->refresh();
}else{
  Yii::app()->user->setFlash('check','Something is wrong!');
}
}
    $this->render('check',array('model'=>$model));
}
于 2012-09-07T17:57:50.457 回答