zoukankan      html  css  js  c++  java
  • magento登陆

    magento判断用户登录

    Magento 登陆之后返回登录之前的页面

    magento 在登陆后一般会自动跳转到 My Account 页面

    但是经常会有需求 就是登陆自动跳转到 之前的页面里面

    工具/原料

    • php+mysql+apache

    方法/步骤

    1.  

      只要加代码

       Mage::getSingleton('customer/session')->setBeforeAuthUrl(Mage::getUrl('*/*/*', array('_secure'=>true)));或

           Mage::getSingleton('customer/session')->setBeforeAuthUrl(Mage::helper("core/url")->getCurrentUrl());

      在之前的页面 就可以实现这个功能

    2.  

        <!-- <?php //判断用户是否是登录用户,如果不是登录用户就跳转到登录页面,登录成就进入网站的页面?>-->

                <?php

                Mage::getSingleton('customer/session')->setBeforeAuthUrl($this->getRequest()->getRequestUri());  //save requested URL for later redirection

                if(!Mage::getSingleton('customer/session')->isLoggedIn()) {  // if not logged in

                    header("Status: 301");

                  //  header('Location: '.Mage::helper('core/url')->getHomeUrl(customer/account/login)) ;  // send to the login page

                   header('Location:'.Mage::getBaseUrl('web').'index.php/customer/account/login/'           ) ;

                    exit;

                }

               

                ?>

      magento在购物车中判断用户登录,如果没有登录就跳转到登录页面,红色字体代表新增代码

      首先进入app/code/local/idev/onestepchekcout/controllers/indexcontroller.php文件

      加上一个

      if(Mage::getSingleton( 'customer/session' )->isLoggedIn())

              {判断和

       else

              {       $redirect=Mage::getBaseUrl().'customer/account/create/';

                     Mage::app()->getFrontController()->getResponse()->setRedirect($redirect)->sendResponse();//这个是需要跳转到的登录页面或者是注册页面

              }

      即可

      放的位置代码如下:

       public function indexAction() {

              if(Mage::getSingleton( 'customer/session' )->isLoggedIn())

              {

                $quote = $this->getOnepage()->getQuote();

                if (!$quote->hasItems() || $quote->getHasError()) {

                    $this->_redirect('checkout/cart');

                    return;

                }

                if (!$quote->validateMinimumAmount()) {

                    $error = Mage::getStoreConfig('sales/minimum_order/error_message');

                    Mage::getSingleton('checkout/session')->addError($error);

                    $this->_redirect('checkout/cart');

                    return;

                }

                $this->loadLayout();

                if(Mage::helper('onestepcheckout')->isEnterprise() && Mage::helper('customer')->isLoggedIn()){

                    $customerBalanceBlock = $this->getLayout()->createBlock('enterprise_customerbalance/checkout_onepage_payment_additional', 'customerbalance', array('template'=>'onestepcheckout/customerbalance/payment/additional.phtml'));

                    $customerBalanceBlockScripts = $this->getLayout()->createBlock('enterprise_customerbalance/checkout_onepage_payment_additional', 'customerbalance_scripts', array('template'=>'onestepcheckout/customerbalance/payment/scripts.phtml'));

                    $rewardPointsBlock = $this->getLayout()->createBlock('enterprise_reward/checkout_payment_additional', 'reward.points', array('template'=>'onestepcheckout/reward/payment/additional.phtml', 'before' => '-'));

                    $rewardPointsBlockScripts = $this->getLayout()->createBlock('enterprise_reward/checkout_payment_additional', 'reward.scripts', array('template'=>'onestepcheckout/reward/payment/scripts.phtml', 'after' => '-'));

                    $this->getLayout()->getBlock('choose-payment-method')

                    ->append($customerBalanceBlock)

                    ->append($customerBalanceBlockScripts)

                    ->append($rewardPointsBlock)

                    ->append($rewardPointsBlockScripts)

                    ;

                }

                $this->renderLayout();

              }

              else

              {       $redirect=Mage::getBaseUrl().'customer/account/create/';

                     Mage::app()->getFrontController()->getResponse()->setRedirect($redirect)->sendResponse();

              }

          }

    3.  

      判断用户是否从结算页面当中进入的,如果是从结算页面当中进入登录的或者是注册的那么需要进入下一步操作

        首先在form表单中加个<input name="xxx" value="xxxx" type="hidden"/>代码如下:

      <form id="login-form" action="http://www.wellsupplier.com/index.php/customer/account/loginPost/" method="post">

                    <input type="hidden" value="check-out" name="cart-name"/>

      或者跳转到进入登录注册页面前一页

        <?php echo $currlink=substr($_SERVER['HTTP_REFERER'],27); ?>

             <input type="hidden" value="<?php echo $currlink;?>" name="cart-name"/>

      然后去loginPostAction方法中进行判断,代码路径D:Program FileswampwwwfocalpricedappcodecoreMageCustomercontrollersaccountcontrollers.php文件

      然后找到public function loginPostAction()方法 ;

       public function loginPostAction()

          {            

          $chac=$this->getRequest()->getParam("cart-name");  //获取表单的传过来的值

         

              if ($this->_getSession()->isLoggedIn()) {

                  $this->_redirect('*/*/');

                  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 = Mage::helper('customer')->getEmailConfirmationUrl($login['username']);

                                  $message = Mage::helper('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.'));

                  }

              }

              if(isset($chac)){      //判断表单的值进行跳转

         

              $redirect=Mage::getBaseUrl().$chac;

               Mage::app()->getFrontController()->getResponse()->setRedirect($redirect)->sendResponse();

              } else  {

              $this->_loginPostRedirect();

              }

          }

  • 相关阅读:
    重建二叉树
    替换空格
    四种类型转换符
    KVC和KVO简单介绍
    多线程之GCD的理解
    iOS常用代码
    iOS开发一些经常用到的第三方框架
    AS3 about Array.splice()
    sharedobject
    FlashBuilder的快捷键
  • 原文地址:https://www.cnblogs.com/xingmeng/p/4787462.html
Copyright © 2011-2022 走看看