2012-02-09 57 views
0

我想從外部網站取代Magento相當繁瑣的ajax登錄。該網站使用Magento作爲商店。網站和magento商店都有自己的登錄,因此,當用戶登錄時,兩者都同步很重要。這是通過ajax-call每頁重新加載完成的,保持用戶登錄到Magento。我想刪除這個,所以我創建了一個檢查每個頁面重新加載,這將做服務器端的一切。Magento外部登錄將不會創建會話cookie

我的問題是,下面的代碼不能正常工作:

//Get Magento session-object 
Mage::getSingleton("core/session", array("name"=>"frontend")); 
$session = Mage::getSingleton("customer/session", array("name"=>"frontend")); 

//Check if logged in 
if(!$session->isLoggedIn()){        
    //Not logged in, therefor log in 
    $mpassword = $this->getMagentoPassword(); 
    $musername = $this->getAddress(); 
    try 
    { 
     $session->login($musername, $mpassword);  
    }catch(Exception $e){ 
     echo $e->getMessage(); 
    }        
} 

在餅乾看,沒有任何創造,阿賈克斯登錄實際上做了一個「前端」 -cookie。我知道上面的代碼實際上是登錄一個用戶,但是沒有創建任何會話cookie。有什麼建議麼?

回答

3

如果未設置$_SESSION變量,即在覈心會話實例化之前未調用session_start(),則Magento只會使用您的代碼初始化會話。
參考Mage_Core_Model_Session_Abstract_Varien::start()瞭解詳情。

作爲一種解決方案,最簡單的方法是在請求期間啓動Magento會話,然後在之前啓動網站的其他會話。
否則,您將不得不復制將會話名稱設置爲frontend的代碼並初始化Magento會話Cookie。

+0

非常感謝這個,它肯定有訣竅,我懷疑它也是一個問題。再一次,謝謝! – Undrium 2012-02-09 09:20:30