1

我在尝试从外部页面(相同的服务器、相同的域等)上访问 Magento 的项目时碰壁了。我想在向他们展示网站上的某些部分之前查看用户是否已登录 Magento。

请记住,此代码存在于 Magento 之外。

法师::app("默认");
Mage::getSingleton("core/session", array("name" => "frontend"));

如果(空($session))
{
  $session = Mage::getSingleton("客户/会话");
}

if($session->isLoggedIn())
  回声“嗨”;

$cart = Mage::helper('checkout/cart')->getCart()->getItemsCount();
回声$购物车;

$cart 返回 0,我的购物车中肯定有产品。isLoggedIn() 也返回 false。我在这里做错了什么?Magento 中是否有我需要打开或关闭的选项才能在 Magento 之外访问此信息?

4

3 回答 3

1

使用上面的代码,我在 Magento 文件夹中创建了一个 php 文件。从那里,添加购物车中的商品数量以及您是否登录到数组并将其编码为 json。我在外部页面上使用了一些 jquery 来获取文件并提取我需要的数据。

不是很理想的情况,但它现在有效。

于 2010-04-28T15:23:28.077 回答
1

您是否包括 Mage.php (定义getSingleton)?

require_once ($_SERVER['DOCUMENT_ROOT'] . '/app/Mage.php');

通话后 $session 里面有什么getSingleton()

print_r ($session);

编辑:我最后尝试了这个,但无法获得准确的 isLoggedIn() 或 getItemsCount() 数据。当我转储 $session 时,它会将所有字段显示为“受保护”。

我对要求用户登录不感兴趣......我只想从已经登录的会话中访问数据。

其他人对此有任何想法吗?那里的所有示例似乎都是 1.4.x 之前的版本。

于 2010-04-30T03:48:39.943 回答
0
require_once "app/Mage.php";

umask(0); 

Mage::app();

//  require_once $_SERVER['DOCUMENT_ROOT'] . "/mage1/app/Mage.php";

// Customer Information

$firstname = "krishana";

$lastname = "singh";

$email = "krish.bhati@gmail.com";

$password = "myverysecretpassword";


// Website and Store details

$websiteId = Mage::app()->getWebsite()->getId();

$store = Mage::app()->getStore();

$customer = Mage::getModel("customer/customer");

$customer->website_id = $websiteId;

$customer->setStore($store);


$mageRunCode = isset ( $_SERVER ['MAGE_RUN_CODE'] ) ? $_SERVER ['MAGE_RUN_CODE'] : '';

$mageRunType = isset ( $_SERVER ['MAGE_RUN_TYPE'] ) ? $_SERVER ['MAGE_RUN_TYPE'] : 'store';

$app = Mage::app ( $mageRunCode, $mageRunType );

Mage::getSingleton('core/session', array('name' => 'frontend')); 

$session = Mage::getSingleton('customer/session');

$session->start();

$customer->loadByEmail($email); 

$customer_id= $customer->getId();


if($customer_id){   

Mage_Core_Model_Session_Abstract_Varien::start();

$session->login($email, $password);

$session->setCustomerAsLoggedIn($session->getCustomer()); 

echo $session->isLoggedIn() ? $session->getCustomer()->getName().' is online!' : 'not logged in';


}
于 2013-07-02T06:14:03.313 回答