How to set returnUrl value in yii

2019-05-05 20:52发布

问题:

I am using Yii and the problem i am getting is with the Yii::app()->user->returnUrl .It always returns me to the index.php page.

How can I set its value to the page which requested the current page as I do not know from which page user has visited the current page?

回答1:

You can use Yii::app()->request->urlReferrer to see where the user came from.

public function beforeAction()
{
    Yii::app()->user->returnUrl = Yii::app()->request->urlReferrer;
    return parent::beforeAction();
}

Be careful, if the user came from a 3rd party site, then this will redirect them away from your site.



回答2:

There is no such thing as: Yii::app()->user->urlReferrer

It should be: Yii::app()->request->urlReferrer or Yii::app()->request->requestUri (current page)

So try this:

Yii::app()->user->returnUrl = Yii::app()->user->urlReferrer;

Or this one (which I personally prefer):

Yii::app()->user->returnUrl = Yii::app()->request->requestUri;


回答3:

For those using Yii2

Yii::$app->user->returnUrl = Yii::$app->request->referrer;


回答4:

I created a Yii extension to manage return URLs, you can find it here: https://github.com/cornernote/yii-return-url#yii-returnurl

It's an improvement over the way Yii handles it because it stores the return url in the GET/POST data instead of the SESSION. This means that if you have multiple tabs open then each can have it's own return url.



回答5:

You can use like this

$http = new CHttpRequest();
$referrer_url = $http->getUrlReferrer();
$this->redirect($referrer_url);

Hope this will help you



回答6:

You can also do like that

Yii::app()->user->returnUrl = Yii::app()->request->urlReferrer;
$this->redirect(Yii::app()->user->returnUrl);