gpt4 book ai didi

php - Magento - 检查管理员和客户是否登录

转载 作者:可可西里 更新时间:2023-11-01 12:57:10 24 4
gpt4 key购买 nike

我有一个安装了 Magento 1.4.0.1 的网络服务器。我有另一个与其共享凭据的网站。我已经设法检查客户是否登录(在更改了 Magento 中的 cookie 位置之后),但是当我还试图弄清楚管理员是否登录时,事情变得复杂了。我只能得到正确的答案对于我要求的第一个 session (客户或管理员,第二个 session 从未登录)。

我怎样才能得到两个答案?

这是我用来测试的代码:


require_once '../app/Mage.php';
umask(0) ;

Mage::app();

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

if ($session->isLoggedIn()) {
echo "Customer is logged in";
} else {
echo "Customer is not logged in";
}

// Checking for admin session
Mage::getSingleton('core/session', array('name'=>'adminhtml') );
$adminsession = Mage::getSingleton('admin/session', array('name'=>'adminhtml'));

if($adminsession->isLoggedIn()) {
echo "Admin Logged in";
} else {
echo "Admin NOT logged in";
}

所以对于这样的代码,管理员永远不会登录。如果你把关于管理员的部分放在第一位,那么客户永远不会登录。看起来我在两个请求之间漏掉了一行。

这可能与这个未回答的问题是同一个问题:Magento how to check if admin is logged in within a module controller

这似乎是一个流行的问题,但我找不到合适的解决方案...

感谢您的帮助!

最佳答案

我从另一个角度(尝试从管理端登录客户)发现了“bug-feature”,但仍然找到了原因。

问题出在 session_name() 函数上。如果您转到 Mage_Core_Model_Session_Abstract_Varien,您会在那里看到 session 对象正在使用标准的 PHP session 函数,而 PHP 无法同时处理两个 session 。

adminside 的 session id 存储在 cookie adminhtml 中,而客户端的 session id 存储在前端 cookie 中。然后在 adminside 你有 session ID 由 adminhtml cookie 初始化。在 adminside 中,您的客户/ session 对象存储在 PHP session 中的类似 $_SESSION['customer'](尚未检查确切 key )的内容中,用于存储在 adminhtml cookie 中的 ID。这意味着客户/ session 对象在 magento 的管理和客户端部分引用不同的 session 。

关于php - Magento - 检查管理员和客户是否登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4950077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com