Magento-访问Magento外部的会话


Magento - Access session outside magento

我正在使用Mangto 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.mymanento.com 这样的子域上

但它似乎无法访问会话。我该怎么修?

提前感谢!

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

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

此外,您很可能只需要对Mage::app()进行一次调用。

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