代码之家  ›  专栏  ›  技术社区  ›  Martijn Heemels

如何从magento外部访问magento用户的会话?

  •  9
  • Martijn Heemels  · 技术社区  · 16 年前

    我正在尝试在我的网站的另一部分访问Magento客户会话。

    domain.com/shop/ <- Magento
    domain.com/test.php
    

    这家商店本身就很有魅力,但是我试图在test.php中确定一个客户是否登录了,所以我可以用一个指向他的购物车的链接来显示他的名字。

    内容 测试程序 到目前为止:

    <?php
    require_once dirname(__FILE__).'/shop/app/Mage.php';
    umask(0);
    Mage::app('default');
    Mage::getSingleton('core/session', array('name' => 'frontend'));
    var_dump(Mage::getSingleton('customer/session')->isLoggedIn());
    ?>
    

    我不断地得到 布尔(假) 返回。我在domain.com/shop/so__true_登录到magento。

    我忘了什么吗?

    3 回复  |  直到 8 年前
        1
  •  14
  •   jason    16 年前

    我建议检查magento设置的cookie路径。很可能,它被设置为 /shop ,因此上面的文件将无法访问cookie。

    您可以在下面的控制面板中修改Magento用于设置其cookie的路径。 System -> Configuration -> Web (under the General heading) -> Session cookie management

        2
  •  0
  •   Nikhil Freddroid    12 年前

    这是在 confuguration-> web 在Magento版本上。1.10-1.1

        3
  •  0
  •   WackGet    8 年前

    同样的问题也让我发疯了。我完成了以下工作,直到最后一项解决了它:

    • 是否设置了正确的mage store id(当前存储)?
    • 您是否使用与magento相同的会话路径?
    • 您是否使用相同的(子)域进行cookie?
    • 您在Magento内外都使用HTTP或HTTPS吗?

    如果您已经检查了以上所有内容,请首先确保自己初始化核心“前端”会话,如下所示:

    // Initialise the core "frontend" session
    Mage::getModel('core/session', array('name' => 'frontend'));
    

    然后您可以这样访问客户/会话:

    $customer = Mage::getSingleton("customer/session", array('name' => 'frontend'))->getCustomer();