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 Files\wamp\www\focalpriced\app\code\core\Mage\Customer\controllers\accountcontrollers.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();

    }

    }

magento登陆的更多相关文章

  1. 解决magento后台无法登陆/登陆没有反应的方法

    安装过magento的几个版本,安装好后在登陆后台的时候都遇到了点问题,用户名和密码都输入正确,就是登陆不了后台,经过研究发现,登陆不了后台的主要是因为magento自身缓存设置的问题,最模板解决方法 ...

  2. magento

     打开 magento/app/code/core/Mage/Core/Model/Session/Abstract/varien.php//if (isset($cookieParams['doma ...

  3. magento启用SSL改http成https

    Magento是电子商务网站,对于网站的用户信息安全来说,让Magento使用SSL连接是一个很好的解决方案.如果在页面的边栏或者底部放上些表明本站使用安全连接的图片,显得更专业,让客户有安全感,对于 ...

  4. Magento获取当前页面URL地址

    Magento获取当前页面URL地址 http://www.sunhaibing.com/?p=1260 在Magento中,可以通过core/url助手类中的getCurrentUrl()方法获取当 ...

  5. Magento添加一个下拉登陆菜单Create Magento Dropdown Login in a few minutes

    Dropdown login forms are not a feature many online stores use, but in some cases they could be quite ...

  6. 用facebook账号登陆到你的Magento网店

    Inchoo提供magento和facebook连接的扩展,可以到http://inchoo.net/ecommerce/magento/facebook-connect-magento-extens ...

  7. magento后台登陆被锁定 索引报错的解决:General error: 1205 Lock wait timeout

    1. magento在索引的时候用shell,有时候会报错: General error: 1205 Lock wait timeout exceeded 这个时候,是因为行锁的原因,在表中您直接用s ...

  8. Magento在IE下登陆不了后台,在Firefox下正常

    目前的解决办法如下: 方法一,用FF登陆后台,在 System—Configuration-Web-Session Cookie management....timeout 改为:86400 方法二: ...

  9. magento后台无法登陆的问题

    解决方法: 打开 magento/app/code/core/Mage/Core/Model/Session/Abstract/varien.php 将// set session cookie pa ...

随机推荐

  1. 基于浏览器的开源“管理+开发”工具,Pivotal MySQL*Web正式上线!

    基于浏览器的开源“管理+开发”工具,Pivotal MySQL*Web正式上线! https://www.sohu.com/a/168292858_747818 https://github.com/ ...

  2. chrome中打开 swf下载的问题

    https://helpx.adobe.com/cn/flash-player/kb/enabling-flash-player-chrome.html 1. 在地址栏中,键入 chrome://se ...

  3. GPUImage简单滤镜使用(一)

    今天来学习一下一个简单滤镜使用的流程,通过调节亮度滤镜来了解.先将GPUImage库导入到项目中,引入头文件"GPUImage.h"   一.创建亮度滤镜对象    GPUImag ...

  4. Visual Studio 开始支持编写 Android 程序并自带 Android 模拟器【转载】

    原文地址 本文内容 为什么需要一个 Android 模拟器 针对 Visual Studio Android 模拟器的调试 Visual Studio Android 模拟器的传感器模拟和其他功能 A ...

  5. linux 文件系统与磁盘修复

    fsck修复受损的文件系统   Linux不正常关机,有时候再次启动时会报文件系统损坏,如何修复文件? 首先会让你输入root用户的密码.  1)出错的时候如果告诉你是哪一块硬盘的分区有问题,比如是/ ...

  6. Discuz常见小问题-_如何修改网站LOGO

    1 界面-风格管理,点击编辑 2 默认的LOGO图片叫做logo.png,存放在X:\PHPNow\htdocs\Discuz\upload\static\image\common文件夹下面,其中X是 ...

  7. PD 之 连接数据库并导出数据及生成PDM文件

    使用PowerDesigner工具,连接数据库并导出数据及生成PDM文件. 1.建立连接 “以管理员身份运行”打开PowerDesigner,右键“Workspace”→“New”→“Physical ...

  8. LCD显示——点阵字体

    Bitmap font 点阵字体是把每一个字符都分成16×16或24×24个点,然后用每个点的虚实来表示字符的轮廓. 点阵字体优点是显示速度快,不像矢量字体需要计算:其最大的缺点是不能放大,一旦放大后 ...

  9. mysql 俩个时间相减后取分钟

    CASE WHEN TIMESTAMPDIFF(MINUTE,o.createDate,o.chargingStartDate) != THEN 'APP解锁计费' ELSE '系统自动计费' END ...

  10. CENTOS7更换YUM源为163源

    访问地址为:http://mirrors.163.com/.help/centos.html 首先备份源: mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum. ...