Magento登录后如何在上一页重定向

时间:2016-06-29 12:21:04

标签: magento login

我正在使用Magento 1.9。*,我想在用户登录成功登录后重定向上一页。

3 个答案:

答案 0 :(得分:1)

我找到了一个解决方案,

为此遵循以下步骤 打开header.phtml在文件顶部添加此代码

if(!Mage::helper('customer')->isLoggedIn()) {
 $loginback=$this->helper('core/url')->getCurrentUrl();
 $check=strstr($loginback, 'customer/account/login');
 if(!strlen($check)){
 Mage::getSingleton('core/session')->setLoginBackUrl($loginback);
 }
}

/app/code/core/Mage/Customer/controllers覆盖到本地或自定义模块并添加此功能

protected function _loginPostRedirect()
{
    $session = $this->_getSession();

    $backUrlcustom=Mage::getSingleton('core/session')
    ->getLoginBackUrl();

    if(isset($backUrlcustom) && $backUrlcustom !=""){
          $session->setBeforeAuthUrl($backUrlcustom);
    }
    $this->_redirectUrl($session->getBeforeAuthUrl(true));
}

这对我有用。

答案 1 :(得分:1)

为此,配置设置必须为System -> Configuration -> CUSTOMERS -> Customer Configuration -> Login Options Set: Redirect Customers to Account Dashboard after Loggin in = No

但还有一些工作要做。请检查您提到的核心控制器/app/code/core/Mage/Customer/controllers/AccountController.php_loginPostRedirect方法,查看if ($referer) {部分。这就是你需要去的地方。

因此,您无需在任何课程中更改任何内容。 只需在<form>标记内的登录表单phtml中添加以下代码即可。

<?php if (!Mage::getStoreConfigFlag(
        Mage_Customer_Helper_Data::XML_PATH_CUSTOMER_STARTUP_REDIRECT_TO_DASHBOARD
    )) { ?>
    <input name="referer" type="hidden" value="<?php echo Mage::helper('core')->urlEncode(Mage::getBaseUrl()); ?>" />
<?php } ?>

登录表单示例

<form action="<?php echo $this->getPostActionUrl() ?>" method="post">
<input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />
<?php if (!Mage::getStoreConfigFlag(
        Mage_Customer_Helper_Data::XML_PATH_CUSTOMER_STARTUP_REDIRECT_TO_DASHBOARD
    )) { ?>
    <input name="referer" type="hidden" value="<?php echo Mage::helper('core')->urlEncode(Mage::getBaseUrl()); ?>" />
<?php } ?>
<div class="block-content">
    <label for="mini-login"><?php echo $this->__('Email address:') ?></label><input type="text" name="login[username]" id="mini-login" class="input-text" />
    <label for="mini-password"><?php echo $this->__('Password:') ?></label><input type="password" name="login[password]" id="mini-password" class="input-text" />
    <div class="mini-actions">
        <a href="<?php echo $this->getForgotPasswordUrl() ?>" class="f-left"><?php echo $this->__('Forgot Your Password?') ?></a>
        <button type="submit" class="button"><span><span><?php echo $this->__('Log in') ?></span></span></button>
    </div>
</div>

在上面的示例中,客户将转到referer字段的值:<input name="referer" type="hidden" value="<?php echo Mage::helper('core')->urlEncode(Mage::getBaseUrl()); ?>" />

因此,如果需要将此值更改为当前页面URL或“上一页”,则用户将返回此页面。请根据您的要求Mage::getBaseUrl()

进行更改

比如说,如果您在下拉列表等迷你登录表单上使用它,则需要使用页面的当前URL。 Mage::helper('core/url')->getCurrentUrl()

如果您在登录页面,那么您需要使用之前的网址即。 HTTP_REFERER即登录页面的Mage::helper('core/http')->getHttpReferer()

<?php if (!Mage::getStoreConfigFlag(
        Mage_Customer_Helper_Data::XML_PATH_CUSTOMER_STARTUP_REDIRECT_TO_DASHBOARD
    )) { ?>
    <input name="referer" type="hidden" value="<?php echo Mage::helper('core')->urlEncode(Mage::helper('core/http')->getHttpReferer()); ?>" />
<?php } ?>

答案 2 :(得分:0)

Dhrumin和Sandipan工作的解决方案,但是我不想覆盖核心类,因此我需要一个用于登录和重定向的解决方案。对于magento 1.9.x,似乎我们唯一要做的就是设置使用者会话的变量“ BeforeAuthUrl”。登录和注册方法都重定向到该URL(如果存在)。我将此代码段放在header.phtml中:

if (!Mage::helper('customer')->isLoggedIn()) {
$loginback = $this->helper('core/url')->getCurrentUrl();
$checkLogin = strstr($loginback, 'customer/account/login');
$checkRegister = strstr($loginback, 'customer/account/create');
if (!strlen($checkLogin) && !strlen($checkRegister) ) {
    Mage::getSingleton('customer/session')->setBeforeAuthUrl($loginback);
 }
}