在外部脚本中从Magento获取登录用户ID-多个会话问题?

在外部脚本中从Magento获取登录用户ID-多个会话问题?,magento,session,Magento,Session,我可以像这样成功登录用户 // Include Magento application require_once ('../store/app/Mage.php'); umask(0); Mage::app(); // Log in user $session = Mage::getSingleton('customer/session', array('name' => 'frontend')); $session->login($username, $password); $s

我可以像这样成功登录用户

// Include Magento application
require_once ('../store/app/Mage.php');
umask(0);
Mage::app();

// Log in user
$session = Mage::getSingleton('customer/session', array('name' => 'frontend'));
$session->login($username, $password);
$session->setCustomerAsLoggedIn($session->getCustomer());

// redirect with session ID
header('Location: https://www.domain.com/?SID='.$session->getEncryptedSessionId());
exit;
然后我就可以得到我需要使用的任何用户数据

// Include Magento application
require_once ('../store/app/Mage.php');
umask(0);
Mage::app();

if(Mage::getSingleton('customer/session')->isLoggedIn())
  echo Mage::getSingleton('customer/session')->getId();
else
  echo 'Not logged in';
问题在于,当用户通过站点上的表单登录时,上述代码块返回“未登录”,而不是使用第一个代码块中的代码登录

这两种登录方法似乎创建了可以并行运行的单独会话。如果用户X使用站点的内置表单登录,然后用户Y使用我的代码登录-两个用户都已登录。商店说,欢迎用户X,但我的代码返回用户Y的ID


你知道发生了什么事吗?我需要用户能够以任何一种方式登录,但需要能够获取他们的ID。

//在控制器创建函数中创建新控制器,比如IndexController.php

abc.com/modulename/index/customLogin

public function customLoginAction()
{
if(Mage::getSingleton('customer/session')->isLoggedIn())
   echo Mage::getSingleton('customer/session')->getId();
else{
    echo 'Not logged in';
    $email = 'abc@gmail.com'
    $customer = Mage::getModel('customer/customer');
    $customer->setWebsiteId(Mage::app()->getWebsite()->getId());
    $customer->loadByEmail(trim($email));
    Mage::getSingleton('customer/session')->loginById($customer->getId());
    echo $customer->getId();
  }
}

我仍然不是100%清楚发生了什么,但我已经解决了这个问题——我做了两个改变

Magento Admin>System>Configuration>General>Web>Session Cookie Management中,我将Cookie路径设置为/

在包含Magento应用程序的文件中,我添加了一行代码

// Include Magento application
require_once ('../store/app/Mage.php');
umask(0);
Mage::app();
Mage::getSingleton('core/session', array('name'=>'frontend')); // <- NEW LINE
// ... and so on ...
//包含Magento应用程序
需要一次('../store/app/Mage.php');
乌马斯克(0);
Mage::app();

Mage::getSingleton('core/session',array('name'=>'frontend'));//您可以使用控制器登录用户functions@Manoj谢谢你的评论,但这对我没有帮助,有没有机会扩大你的答案?谢谢@Manoj。我才刚开始和Magento合作,如果我行动缓慢,我很抱歉。你能解释一下我把控制器放在哪里了吗?我的安装没有路径abc.com/modulename/index/customLogin。我在app/code/core/Mage/core/controllers中找到了IndexController.php/