Magento - 在magento之外访问会话

时间:2014-11-08 20:49:11

标签: php magento session

我正在使用Mangeto 1.9.1

我正在尝试在magento的根文件夹中的php文件中访问magento之外的magento客户会话。

这是我的代码:

<?php
error_reporting(E_ALL | E_STRICT);
$mageFilename = 'app/Mage.php';
require_once $mageFilename;
$app = Mage::app('default'); 
Mage::app();

$customer_id = Mage::getSingleton('customer/session')->getId();


$GrandTotal = Mage::getModel('sales/quote')->loadByCustomer($customer_id)->getGrandTotal();
$HalfTotal = $GrandTotal / 2;
echo "Grand: $GrandTotal<br>Half: $HalfTotal";
?>  

我的magento安装在像beta.mymagento.com这样的子域上

但它似乎无法访问会话。 我怎么解决它?

提前致谢!

1 个答案:

答案 0 :(得分:2)

您在选择正确的会话时遇到问题,因为Magento将其会话ID存储在与典型PHP应用程序不同的Cookie中。您需要首先初始化核心会话,并告诉它查看名为前端的cookie而不是PHP默认值。您的代码应如下所示:

...

Mage::getSingleton('core/session', array('name' => 'frontend'));
$customer_id = Mage::getSingleton('customer/session')->getId();

...

此外,您很可能只需要拨打一次Mage::app()

注意:如果您的Magento安装中有多个商店/网站,则必须使用相应的标识符调用Mage::app(),例如Mage::app('<website_code>', 'website');

相关问题