1

I've set no on system configuration-> customer login configuration. But nothing's happen, it still direct to my account dashboard.

How to redirect to previous page after login?

  • Have you this setting on website level and store level ?? – Murtuza Zabuawala Mar 29 '17 at 6:49
  • on my website level, because there's no option to do that on my store level. @MurtuzaZabuawala – syahidah humairoh Mar 29 '17 at 6:52
  • So You have done this changes in both website level and global level ?? – Murtuza Zabuawala Mar 29 '17 at 6:54
  • yes, I have done. But after i logged in, it still direct to account dashboard page – syahidah humairoh Mar 29 '17 at 7:01
1

You have to rewrite in local loginPostAction() from app/code/core/Mage/Customer/controllers/AccountController.php to app/code/local/Customer/controllers/AccountController.php Then you put this :

 public function loginPostAction(){

    if (!$this->_validateFormKey()) {
        $this->_redirect('*/*/');
        return;
    }

    if ($this->_getSession()->isLoggedIn()) {
        $this->_redirect('wlc_business');
        return;
    }
    $session = $this->_getSession();

    if ($this->getRequest()->isPost()) {
        $login = $this->getRequest()->getPost('login');
        if (!empty($login['username']) && !empty($login['password'])) {
            try {
                $session->login($login['username'], $login['password']);
                if ($session->getCustomer()->getIsJustConfirmed()) {
                    $this->_welcomeCustomer($session->getCustomer(), true);
                }
            } catch (Mage_Core_Exception $e) {
                switch ($e->getCode()) {
                    case Mage_Customer_Model_Customer::EXCEPTION_EMAIL_NOT_CONFIRMED:
                        $value = $this->_getHelper('customer')->getEmailConfirmationUrl($login['username']);
                        $message = $this->_getHelper('customer')->__('This account is not confirmed. <a href="%s">Click here</a> to resend confirmation email.', $value);
                        break;
                    case Mage_Customer_Model_Customer::EXCEPTION_INVALID_EMAIL_OR_PASSWORD:
                        $message = $e->getMessage();
                        break;
                    default:
                        $message = $e->getMessage();
                }
                $session->addError($message);
                $session->setUsername($login['username']);
            } catch (Exception $e) {
                // Mage::logException($e); // PA DSS violation: this exception log can disclose customer password
            }
        } else {
            $session->addError($this->__('Login and password are required.'));
        }
    }

    // The adding code here
    $this->_redirectReferer(); //redirect you to the previous page
    $this->_redirect('/'); // redirect you to the home page
    $this->_redirect('wishlist'); //redirect you to wishlist page for exemple
}
  • I don't know why when I set "no" my login page is not give an alert when I insert wrong password – syahidah humairoh Mar 31 '17 at 8:50
  • Either the problem comes from the theme, or you have removed the block that displays the messages$this->getMessagesBlock()->getGroupedHtml(); or the controller if you had modified it, please compare with my controller. – PЯINCƏ Mar 31 '17 at 9:39
1

You can customer_login observer. After customer has logged in, you can redirect the customer where you want.

Here is how to create observer for customer login How to bind an action after customer login success using Magento?

1

Set NO on System > Configuration > Customers > Customer Configuration > Login Options

Then in your login.phtml files (both, persistent/customer/form and customer/form on your template folder), change the action of your <form> to:

action="<?php echo str_replace('login', 'loginPost', $this->helper('customer')->getLoginUrl()) ?>"

But remember, DO NOT EDIT THE CORE! Create a custom extension to accomplish this job.

Reference: https://stackoverflow.com/a/16099279/5810265

  • I don't know why when I set "no" my login page is not give an alert when I insert wrong password – syahidah humairoh Mar 31 '17 at 8:49
  • @syahidahhumairoh I think you will have a problem with core files! – Fayyaz Khattak Mar 31 '17 at 9:29
-1

Please use below code to back to prev page after login

<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$url = $objectManager->create('\Magento\Framework\UrlInterface');
$loginUrl = $url->getUrl('customer/account/login', array('referer' => base64_encode($url->getCurrentUrl())));
?>
<a href="<?php echo $loginUrl;?>">Login</a>
  • OP has asked for M1, not M2 :) but nice to know for m2... – JELLEJ May 8 '18 at 11:57
  • Dont use object manager even in M2 – Sandipan S Jun 7 '18 at 9:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.