解决magento中guest页面cookie保存时间过短问题

2023-05-16

       在magento新的企业版11,有个新的功能退货(RMA),不仅能退货,还能以guest的身份查看订单的各种信息,但在IE下有个问题:cookies的保存时间太短了,如果需要使用到需要验证权限的操作,就会重定向到 sales/guest/form/ 页面。

       查看关键代码,发现跳转是发生在 Mage_Sales_Helper_Guest 类中


class Mage_Sales_Helper_Guest extends Mage_Core_Helper_Dat
{
    /**
     * Cookie params
     */
    protected $_cookieName  = 'guest-view';
    protected $_lifeTime    = 600;

    /**
     * Try to load valid order by $_POST or $_COOKIE
     *
     * @return bool|null
     */
    public function loadValidOrder()
    {
        if (Mage::getSingleton('customer/session')->isLoggedIn()) {
            Mage::app()->getResponse()->setRedirect(Mage::getUrl('sales/order/history'));
            return false;
        }

        $post = Mage::app()->getRequest()->getPost();

        $type           = '';
        $incrementId    = '';
        $lastName       = '';
        $email          = '';
        $zip            = '';
        $protectCode    = '';
        $errors         = false;

        /** @var $order Mage_Sales_Model_Order */
        $order = Mage::getModel('sales/order');

        if (empty($post) && !Mage::getSingleton('core/cookie')->get($this->_cookieName)) {
            Mage::app()->getResponse()->setRedirect(Mage::getUrl('sales/guest/form'));
            return false;
        } elseif (!empty($post) && isset($post['oar_order_id']) && isset($post['oar_type']))  {
            $type           = $post['oar_type'];
            $incrementId    = $post['oar_order_id'];
            $lastName       = $post['oar_billing_lastname'];
            $email          = $post['oar_email'];
            $zip            = $post['oar_zip'];

            if (empty($incrementId) || empty($lastName) || empty($type) || (!in_array($type, array('email', 'zip')))
                || ($type == 'email' && empty($email)) || ($type == 'zip' && empty($zip))) {
                $errors = true;
            }

            if (!$errors) {
                $order->loadByIncrementId($incrementId);
            }

            if ($order->getId()) {
                $billingAddress = $order->getBillingAddress();
                if ((strtolower($lastName) != strtolower($billingAddress->getLastname()))
                    || ($type == 'email'
                        && strtolower($email) != strtolower($billingAddress->getEmail()))
                    || ($type == 'zip'
                        && (strtolower($zip) != strtolower($billingAddress->getPostcode())))
                ) {
                    $errors = true;
                }
            } else {
                $errors = true;
            }

            if (!$errors) {
                $toCookie = base64_encode($order->getProtectCode());
                Mage::getSingleton('core/cookie')->set($this->_cookieName, $toCookie, $this->_lifeTime, '/');
            }
        } elseif (Mage::getSingleton('core/cookie')->get($this->_cookieName)) {
            $fromCookie     = Mage::getSingleton('core/cookie')->get($this->_cookieName);
            $protectCode    = base64_decode($fromCookie);

            if (!empty($protectCode)) {
                $order->loadByAttribute('protect_code', $protectCode);

                Mage::getSingleton('core/cookie')->renew($this->_cookieName, $this->_lifeTime, '/');
            } else {
                $errors = true;
            }
        }

        if (!$errors && $order->getId()) {
            Mage::register('current_order', $order);
            return true;

   关键是:


 //如果没找到cookie的信息,就重定向到登录页面
if (empty($post) && !Mage::getSingleton('core/cookie')->get($this->_cookieName)) {
            Mage::app()->getResponse()->setRedirect(Mage::getUrl('sales/guest/form'));
            return false

设置cookie的有效期是在:

                $toCookie = base64_encode($order->getProtectCode());
                Mage::getSingleton('core/cookie')->set($this->_cookieName, $toCookie, $this->_lifeTime, '/');

从上面的代码可看出,$this->_lifeTime 的值就是cookie的有效期,于是解决方法就很简单了,rewrite这个helper,把 $_lifeTime 设置为一个比较大的值就行了。


【文章作者】曾健生

【作者邮箱】zengjiansheng1@126.com

【作者QQ】190678908

【作者博客】blog.csdn.net/newjueqi






本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决magento中guest页面cookie保存时间过短问题 的相关文章

  • Magento Mage::getUrl 带后缀

    当 url 具有 html 后缀时 在 magento 中处理生成 url 的正确方法是什么 例如 获取以下产品 url 类别 产品 html 你不能简单地做Mage getUrl mycategory myproduct html or
  • Magento:设置集合限制

    我试图找出的问题是如何对集合设置限制 我在 Google 上找到的答案仅适用于具有 setPage pageNum pageSize 的目录 这对任何其他集合都不起作用 请参阅下面的答案 做这件事有很多种方法 collection Mage
  • magento 付款流程..一般如何运作

    有一个问题 我希望这是问的正确地方 不太明白magento 中的付款方式 客户去结账 假设想要以客人身份付款 因此提供地址等 最后找到付款方式 然后我希望客户通过信用卡付款 已经为我选择的网关 银行 安装了模块 那时 我希望用户被重定向到第
  • PHP foreach 循环外访问变量

    我是 PHP 新手 谁能告诉我如何访问 foreach 之外的 foreach 循环变量 请通过代码查找如下 我需要它在下面的 html img 标签的 src 属性中
  • 在购物车页面上显示分级定价

    如果我在这个页面上 http 结账 购物车 对于购物车中的产品 我想显示分级定价 与商品页面上显示的定价相同 如果有 我的尝试是添加
  • 使用 getCollection 和 addLevelFilter 列出 Magento 类别,但排除默认根类别

    我使用以下代码来获取集合并使用 addLevelFilter 2 在级别上进行过滤 这会完美地输出第 2 级的所有类别 除了它还会提取列表中的默认根类别之外 我想从视图中排除它 但在查看了所有可用的方法后 我没有看到任何可以帮助我删除 排除
  • 在不破坏寻呼机的情况下获取第一个集合项

    我之前发布了一个关于此问题的问题 但我现在有了更多信息 我认为最好发布一个新问题而不是修改 抱歉 如果这不是正确的协议 你可以找到我原来的问题here https stackoverflow com questions 6311646 ma
  • Magento - 检查管理员和客户是否登录

    我有一个安装了 Magento 1 4 0 1 的 Web 服务器 我有另一个与之共享凭据的网站 我已经设法检查客户是否登录 在更改 Magento 中的 cookie 位置之后 但是当我还尝试确定管理员是否登录时 事情变得复杂 我只能得到
  • 将 css 添加到 Magento 模板文件的 head 中

    我想在 magento 中的模板 phtml 文件的标签内添加一个 CSS 文件 是否可以 这样做是有原因的 CSS 文件名是动态的 所以直到模板执行时我才知道 可以这样做吗 要在加载布局之后 渲染布局之前从控制器添加 CSS 文件 您需要
  • magento - 无法与 PayPal 网关通信

    有什么解决办法吗 我已经在配置 gt gt 系统 gt gt 支付方式 gt gt PayPal支付解决方案中禁用了SSL验证 但还是不行 您需要禁用 SSL 验证 进入后台 系统 gt 配置 gt 付款方式 找到PayPal Expres
  • Magento Connect 登录后尝试更改为什么路径?

    我每次都会收到错误消息 部署 FTP 错误 登录后无法 chdir 我通过 chmod ing 我的 complete path to magento installation dir 成功完成了第一次连接和设置下载器 至 0777 在 d
  • Magento - 分页生成错误的 URL

    除了网址之外 我的分页工作正常 第 2 页的链接是 example com products 21p 2 什么时候应该是 example com products p 2 当我在地址栏中输入后者时 它工作正常 这是生成链接的代码 li a
  • 如何自定义 magento onepage 结账表单

    我正在使用 Magento 1 5 1 0 我想在单页结账表单中自定义地址块 我想删除 传真 输入字段并将 区域 下拉列表放在国家 地区 下拉列表 下方 这个形式是在哪里定义的 亲切的问候 伯蒂 导航到您的主题文件夹 默认文件位于以下位置
  • 过滤两个类别的产品集合 Magento 1.7

    我想要获取包含 A 类或 B 类产品的产品集合 我已经能够使用以下 php 代码成功获取这些产品 collection Mage getModel catalog product gt getCollection gt joinField
  • Magento:我可以在哪个文件夹中看到我安装的扩展?

    我在 magento 1 5 中安装了一个扩展 只是想知道它在我的服务器上的位置 因为我想向它写入一个包含文件 谢谢 通常在 MagentoFolder app code community SomeCompanyName SomePack
  • Magento 一页结帐 - 出现 TypeError: checkout undefined (在 opcheckout.js 中)

    大约一周前 一页结帐工作正常 但现在不行了 毫无疑问我有错 因为我仍然遇到与管理后端相关的问题 并且我可能在处理该问题的过程中以某种方式搞砸了 无论如何 当 登录 注册 用户单击一页结账的帐单信息步骤中的 继续 按钮时 会发生什么情况 就好
  • 在 Magento 中获取购物车详细信息

    我想通过使用 Magento 获取购物车详细信息getQuote功能 我怎样才能做到这一点 cart Mage getModel checkout cart gt getQuote 当我打印 cart页面停止执行并显示空白页面 但是当我写的
  • 如何在 magento 的左侧栏中显示最新、评价最高和最好的产品

    我正在使用 Magento 版本 1 5 0 1 在主页中 我使用了 2 列和左栏 我想逐一展示最新的 评价最高的和最好的产品 请帮助我如何做到这一点 我是magento新手请帮助我 在您的 app design frontend your
  • Magento 设置脚本中的 ALTER TABLE 不使用 SQL

    乔纳森 戴 https stackoverflow com users 336905 jonathan day says 更新不应采用以下形式 SQL命令 我没遇到过 任何 DDL 或 DML 语句不能 通过 Magento 的配置执行 结
  • magento成功页面变量

    我正在尝试捕获一些 magento 成功页面变量以传递给我们的广告公司 到目前为止 我已经得到了这个 但变量没有输出任何内容 数据需要采用以下格式 price1 price2 price3 qty1 qty2 qty3 sku1 sku2

随机推荐

  • 无病呻吟3:10年中最大的心得

    http blog csdn net hello world2001 article details 7229411 生活中 xff0c 人人都是销售 面试的时候 xff0c 要把自己的实力销售给面试者 给上级汇报工作的时候 xff0c 是
  • 手把手教你做一辆mini平衡自行车!

    今天给大家带来的是一个博主老倪制作的迷你的平衡自行车项目 xff0c 虽然是4年前的老项目了 xff0c 不过相信我们仍然能从中学到一些新东西 演示效果 自行车平衡DIY分为3部分介绍 xff1a 第一部分介绍自行车平衡基本物理原理 xff
  • ADIS16448 配置

    span class hljs keyword void span ADIS16448 Init span class hljs keyword void span GPIO InitTypeDef GPIO InitStructure R
  • 5. 第一次跳槽的心得

    http blog csdn net hello world2001 article details 7229415 第一次跳槽成功喽 xff0c 按照惯例 xff0c 还是从求职角度总结下经验吧 1 不打无把握之仗 xff0c 既然决定到
  • 无病呻吟4:关于简历,以及自我否定之否定

    http blog csdn net hello world2001 article details 7229417 终于到了很多人喜欢的骂人环节了 不知道各位看官 xff0c 在自己的简历上花了多少时间 几个小时 xff0c 还是几天 x
  • 6. 混在2002 - 欢乐的世界杯

    http blog csdn net hello world2001 article details 7229422 写混在日本公司的日子前 xff0c 先简单回忆下2002年幸福的上半年 xff0c 以及随后我作出的一个影响我至今的决定吧
  • 无病呻吟6:F4,圈子,与硬通货

    http blog csdn net hello world2001 article details 7229429 F4是个小圈子 xff0c 当然不是台湾那几个奶油小生 xff0c 而是这个日本公司本人所在部门内的一个小团体 其中的成员
  • 7. 路在何方:第一次选择

    http blog csdn net hello world2001 article details 7229430 2009年那次跳槽的时候 xff0c 不止一次的听到猎头和面试公司的人对我说过 xff0c 你的工作背景非常漂亮 xff0
  • 9. 混在2002:和闷骚男的“同居”生活 - 1

    http blog csdn net hello world2001 article details 7229434 说点开心的事情 xff0c 我当时的两个室友 跟这两个人成为死党 xff0c 都是因为合租的缘故 两个人一个叫 老灵通 x
  • 10. 混在2002:和闷骚男的“同居”生活 - 2

    http blog csdn net hello world2001 article details 7248920 继续说当时的室友 xff0c 这两人都是比较有想法 xff0c 有点小浪漫 xff0c 敢想敢为 xff0c 又比较有毅力
  • 11. 挑战500强管理职位前的苦逼生活

    http blog csdn net hello world2001 article details 7351962 至于我当时的状态 xff0c 则是在迷茫中四处寻找突破口 在一番折腾后 xff0c 我终于定下了一个宏大的目标 xff0c
  • 第二次跳槽:意料之外的结局 - 上

    http blog csdn net hello world2001 article details 7352015 2006年的跳槽是我所有跳槽经历中耗费时间最长 xff0c 最痛苦 xff0c 也最纠结的一次 既有正沉浸在即将成功中的喜
  • 14:第二次跳槽:意料之外的结局 - 下

    http blog csdn net hello world2001 article details 7352028 这也是一个出乎我意料之外的机会 在接到这个电话的时候 xff0c 我正跟Accenture IBM HP这些公司打得火热
  • 推荐一个全新硬件/嵌入式刷题网站!免费!好用!

    越来越多的人才从转码变成了转硬件 xff0c 但是转岗过程中会遇到一些问题 xff0c 比如 xff1a 对学习路线不清晰 找不到专业的练习题 企业真题搜寻困难 xff0c 不知道笔面试考察那些内容 基础编程是一个计算机专业的必备技能 xf
  • my.cnf

    http wenku baidu com view d10a7ea20029bd64783e2cdd html My cnf配置选项 mysqld程序 目录和文件 basedir 61 path 使用给定目录作为根目录 安装目录 chara
  • mysql 修改root密码的方法

    如果是刚安装成功后 xff0c 密码为空 xff0c 修改密码方法为 mysqladmin u root password 39 11111 39 密码不为空 xff0c 修改密码方法有两种 xff1a 1 mysqladmin u roo
  • mysqldump用法小结

    1 备份单个数据库 普通备份 xff1a root 64 A server mysqldump u root p 39 111111 39 newjueqi default gt tmp newjueqi default sql root
  • MySQL数据库性能优化之缓存参数优化

    作者 xff1a Sky Jian 可以任意转载 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及 版权声明 链接 xff1a http isky000 com database mysql perfornamce tuning
  • magento中的启用https

    在Magento的后台管理中 General gt web gt secure 有安全链接的设置 xff0c 所谓安全链接 xff0c 是指启用了https 协议的链接 百度百科中关于https的介绍 xff08 http baike ba
  • 解决magento中guest页面cookie保存时间过短问题

    在magento新的企业版11 xff0c 有个新的功能退货 xff08 RMA xff09 xff0c 不仅能退货 xff0c 还能以guest的身份查看订单的各种信息 xff0c 但在IE下有个问题 xff1a cookies的保存时间