使用Magento时,我遇到了一些奇怪的结果
Mage::getSingleton('customer/session')->getCustomer();
我有以下代码首先检查客户是否已登录,如果是,则获取登录客户的名字:
if(!$this->helper('customer')->isLoggedIn())
{
$name = Mage::getSingleton('customer/session')->getCustomer()->getFirstname();
print 'Hello '.$name;
// ...
}
大部分时间这都可以正常工作,如果登录Joe Bloggs
,则会输出:
Hello Joe
但是时不时地,似乎是当大量客户登录时,我会得到其他名称的意外输出
Hello Lucy
or
Hello John
Mage::getSingleton('customer/session')->getCustomer()
是获取客户详细信息的一种万无一失的方式,还是有可能获得另一个登录客户详细信息?或者我的会话混乱有问题吗?
答案 0 :(得分:0)
根据Mage_Customer_Model_Session::getCustomer
中的核心代码:
/**
* Retrieve customer model object
*
* @return Mage_Customer_Model_Customer
*/
public function getCustomer()
{
if ($this->_customer instanceof Mage_Customer_Model_Customer) {
return $this->_customer;
}
$customer = Mage::getModel('customer/customer')
->setWebsiteId(Mage::app()->getStore()->getWebsiteId());
if ($this->getId()) {
$customer->load($this->getId());
}
$this->setCustomer($customer);
return $this->_customer;
}
......无法加载其他客户的数据(由核心Magento提供)。
如果客户模型已经加载,它将首先返回客户模型,如果没有,则在已经存在ID的情况下加载它,最后如果没有别的话,它将返回空的客户模型。
您的会话可能会变得混乱。我建议你检查你的配置 - 你是否使用数据库,文件,Redis等进行会话存储?