大部分开发人员直接用
Mage::getSingleton('customer/session')->isLoggedIn()
来判断用户是否登录
比如一般magento开发人员会这样用
<?PHP
//get customer login status ?>
<?php $myStatus = Mage::getSingleton('customer/session')->isLoggedIn() ?>
<?php if($myStatus): ?>
<li><a href="/customer/account/index" title="Customer Register">My account</a> |</li>
<li><?php echo $this->getLayout()->getBlock('header')->getWelcome() ?></li>
<?php else: ?>
<li><a href="/customer/account/index" title="Customer Register">My account</a></li>
<li><a href="/customer/account/create" title="Customer Register">Register</a></li>
<?php endif ?>
但其实在magento里面用户登录状态判断函数早已封装好了.
判断用户登陆状态是否登陆的原理是:Magento在Session中检查CustomerID是否已经设置,并且该CustomerID在数据库中是有效的。
在app/code/core/Mage/Customer/Helper/Data.php文件中
/**
* Check customer is logged in
*
* @return bool
*/
public function isLoggedIn()
{
return Mage::getSingleton('customer/session')->isLoggedIn();
}
在app/code/core/Mage/Customer/Model/Session.php文件中
/**
* Checking customer login status
*
* @return bool
*/
public function isLoggedIn()
{
return (bool)$this->getId() && (bool)$this->checkCustomerId($this->getId());
}
所以我们可以在全局用
if ($this->helper('customer')->isLoggedIn()) {
// is logon
}
在magento中判断用户的登录状态或是否登录