在创建新帐户后,我在让客户保持登录方面遇到了很多麻烦。我正在创建一个帐户,并将产品从外部网站添加到购物车,然后将它们发送到Magento商店。我想要发生的是:
我遇到的问题是在第2步和第3步之间。我使用Magento的SOAP API创建了一个帐户,其中包含以下内容:
$customerInfo = array('firstname' => $custFirstname, 'lastname' => $custLastname, 'email' => $email, 'password_hash' => md5( $new_password ), 'store_id' => 34, 'website_id' => 25,'group_id' => 9);
// Call API method customer.create
$newCustomerId = $client->call( $session, 'customer.create', array( $customerInfo ) );
然后我返回他们的客户ID,我将其传递给另一个实际登录的功能,并将产品添加到他们的购物车中:
public static function _addSamplesToCart($customer_id, $sample_one, $sample_two, $sample_three){
Mage::getSingleton("core/session", array("name" => "frontend"));
$customerSession = Mage::getSingleton('customer/session', array("name" => "frontend"));
$customerSession->init("customer_bn_us");
$customerSession->loginById($customer_id);
$cart = Mage::getSingleton('checkout/cart');
$cart->addProductsByIds($idArray);
$cart->save();
$cart->getCheckoutSession()->setCartWasUpdated(true);
}
这些函数实际上是从AJAX post请求调用的,所以当我从_addSamplesToCart获得一个成功的返回值时,我会做一个简单的javascript重定向(window.location =“http://www.myhostname.net/welcome”)和它正确地把我带到了那里,但我还没有登录。
我整个下午都在环顾四周,尝试了几件不同的事情,没有任何效果。我也尝试过将一个隐藏的表单提交给/ customer / account / loginPost,它仍然无效。我已经确认它在Magento中正确创建了一个帐户。我唯一的预感就是我用混合的AJAX和PHP这样做,所以饼干或会话不知何故变得混乱了?
答案 0 :(得分:0)
如果您尝试从不同于Magento商店使用的主机名登录,则无法使用。您可以通过检查AJAX调用后是否创建前端cookie来验证这一点。
我建议你在Magento中创建一个新的控制器,它接收刚创建的客户的id并执行你在函数中编写的代码:
www.myhostname.net/autologin/myaction/13(其中13是刚刚创建的客户的ID)。
显然,您应该添加其他内容以避免安全问题。