最後のページにリダイレクトする信頼できる方法


8

最後のページにリダイレクトするための信頼できる方法はmagentoにありますか?

エラーが発生した場合に前のページにリダイレクトする小さなフォームがあります。

フォームは製品ページに配置され、正常に完了すると別のページにリダイレクトされます。ただし、エラーが発生した場合は、製品ページにリダイレクトします。

私のアクションURLは /my/module/submit

また、信頼できると言うときは、信頼できredirectRefererないことを意味します


1
RedirectRefererは、MagentoのAdminhtmlが戻るボタンをかなり独占的に信頼するのに十分な信頼性がありますか?
philwinkle 2013年

回答:


23

Magentoは$_SERVER['HTTP_REFERER']qualmのないリダイレクトロジックの値に依存しています。参照してくださいMage_Core_Controller_Varien_Action

/**
 * Set referer url for redirect in responce
 *
 * @param   string $defaultUrl
 * @return  Mage_Core_Controller_Varien_Action
 */
protected function _redirectReferer($defaultUrl=null)
{

    $refererUrl = $this->_getRefererUrl();
    if (empty($refererUrl)) {
        $refererUrl = empty($defaultUrl) ? Mage::getBaseUrl() : $defaultUrl;
    }

    $this->getResponse()->setRedirect($refererUrl);
    return $this;
}

/**
 * Identify referer url via all accepted methods (HTTP_REFERER, regular or base64-encoded request param)
 *
 * @return string
 */
protected function _getRefererUrl()
{
    $refererUrl = $this->getRequest()->getServer('HTTP_REFERER');
    if ($url = $this->getRequest()->getParam(self::PARAM_NAME_REFERER_URL)) {
        $refererUrl = $url;
    }
    if ($url = $this->getRequest()->getParam(self::PARAM_NAME_BASE64_URL)) {
        $refererUrl = Mage::helper('core')->urlDecode($url);
    }
    if ($url = $this->getRequest()->getParam(self::PARAM_NAME_URL_ENCODED)) {
        $refererUrl = Mage::helper('core')->urlDecode($url);
    }

    if (!$this->_isUrlInternal($refererUrl)) {
        $refererUrl = Mage::app()->getStore()->getBaseUrl();
    }
    return $refererUrl;
}

あなたがに頼ることに満足していない場合$_SERVER['HTTP_REFERER']、あなたが行うことができる唯一のことは、あるセッションの中で最も最近訪問したURLを保存し、ケースを扱うこの値のためにゲッターを作成する際に、直接サイトに誰かをナビゲート

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.