Php Magento设置客户会话网关或连接超时错误
我们试图在Magento中务实地设置客户会话。我们正在通过setCustomeraLoggeDin方法设置会话。但对于某些客户,它会继续加载/处理请求,并在最后显示“网关超时或连接超时”错误。这是一个随机的问题,并不是所有的客户都有 我们的Magento设置有3个网站B2B、B2E、B2C,我们只在B2B和B2E网站上面临这个问题。请查看下面的功能并提供可能的解决方案Php Magento设置客户会话网关或连接超时错误,php,magento,session,session-cookies,magento-1.9,Php,Magento,Session,Session Cookies,Magento 1.9,我们试图在Magento中务实地设置客户会话。我们正在通过setCustomeraLoggeDin方法设置会话。但对于某些客户,它会继续加载/处理请求,并在最后显示“网关超时或连接超时”错误。这是一个随机的问题,并不是所有的客户都有 我们的Magento设置有3个网站B2B、B2E、B2C,我们只在B2B和B2E网站上面临这个问题。请查看下面的功能并提供可能的解决方案 $customer=Mage::getModel('customer/customer')->load($id); $se
$customer=Mage::getModel('customer/customer')->load($id);
$session = Mage::getSingleton('customer/session');
$session->setCustomerAsLoggedIn($customer);
$this->_redirect();
不应直接将customer对象传递给会话,而应按如下方式传递:
$session = Mage::getSingleton('customer/session', array('name' => 'frontend'));
$session->login($email, $password);
$session->setCustomerAsLoggedIn($session->getCustomer());
因此,在登录完成后从会话传递客户对象
请尝试让我们知道这是否适合您
如果您只想通过电子邮件登录用户,您还可以尝试以下方法
$customer = Mage::getModel('customer/customer')->load($customerId);
if ($customer->getWebsiteId()) {
Mage::init($customer->getWebsiteId(), 'website');
$session = Mage::getSingleton('customer/session');
$session->loginById($customerId);
return $session;
}
您需要获取客户Id使用电子邮件第一上述工作,而且网站是关键
工作代码:
以下是我在演示站点上检查的工作代码:
include("app/Mage.php");
Mage::app();
$customer = Mage::getModel("customer/customer");
$customer->setWebsiteId(Mage::app()->getStore()->getWebsiteId());
$customer->loadByEmail('testemail@123.org');
$customerId = $customer->getId();
Mage::init($customer->getWebsiteId(), 'website');
$session = Mage::getSingleton('customer/session');
$session->loginById($customerId);
return $session;
exit;
实际上,我们并没有向用户询问密码。我们只有基于电子邮件和OTP确认的登录系统。因此,我们只需在OTP确认后通过电子邮件加载客户,并在会话中设置客户对象。嗯,您可以尝试为用户设置一次网站,即$customer->setWebsiteId($websiteId);也更新了我的答案