我正在使用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这样的子域上
但它似乎无法访问会话。 我怎么解决它?
提前致谢!
答案 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');
。