2017-07-31 72 views
6

我想以編程方式將用戶登錄到magento管理員。管理頁面位於iframe中,並且必須自動重定向到管理儀表板而無需身份驗證。我使用了古代郵政中發現的代碼,它與magento核心來源相匹配。該代碼是:以編程方式magento管理連接不起作用

umask(0); 
$app = Mage::app('default'); 

Mage::getSingleton('core/session', array('name' => 'adminhtml')); 

// supply username 
$user = Mage::getModel('core/factory')->getModel('admin/user')->loadByUsername($loginadmin); 

    if (Mage::getSingleton('adminhtml/url')->useSecretKey()) { 
     Mage::getSingleton('adminhtml/url')->renewSecretUrls(); 
    } 

    $session = Mage::getSingleton('admin/session'); 
    $session->setIsFirstVisit(false); 
    $session->setUser($user); 
    $session->setAcl(Mage::getResourceModel('admin/acl')->loadAcl()); 
    Mage::dispatchEvent('admin_session_user_login_success',array('user'=>$user)); 

    if ($session->isLoggedIn()) { 
     //Redirection vers le dashboard 
     $url = "index.php/admico/dashboard"; 
     header('Location: '.$url); 
    } 

當我var_dump()數據,用戶存在,它有像姓名,身份證等的所有信息,它是正確的。代碼進入最後的if並重定向到'index.php/admico/dashboard',因此$session已正確登錄。但是,無論如何,首頁顯示的連接形式就好像會話未登錄一樣,而不是管理員。

有人能幫我弄清楚有什麼問題嗎?

回答

0

也許當窗口在最後一個條件中重定向時,iframe無法訪問您網站上的登錄會話。我看到您正在使用PHP header函數。我能想到的唯一可能的解決方案是獲取登錄會話的SID並將其用作URL參數。所以裏面的條件有些編輯的代碼看起來是這樣的:

$SID=$session->getEncryptedSessionId(); 
$url = "index.php/admico/dashboard?SID=" . $SID; 

如果不工作,你可以嘗試使用PHP函數setcookie()$session作爲存儲的數據,然後嘗試重定向。你可以找到那個here的文檔。這就是我爲你準備的。如果這不起作用,請嘗試看看this,看看有沒有什麼可以幫助你。祝你好運!

+0

很抱歉,但它不工作:/ – Erlaunis

0

我在代碼中做了兩處修改,它在firefox,safari和chrome上對我來說工作得很好。我在嘗試此代碼之前還清理了我的Cookie。

test.php的

<iframe src="http://localhost.site/test_login.php" width="100%"></iframe> 

test_login.php

<?php 

require 'app/Mage.php'; 

umask (0); 
Mage::app ('admin'); 

Mage::getSingleton('core/session', array('name' => 'adminhtml')); 

// supply username 
$user = Mage::getModel('admin/user')->loadByUsername("USERNAME"); 

if (Mage::getSingleton('adminhtml/url')->useSecretKey()) { 
    Mage::getSingleton('adminhtml/url')->renewSecretUrls(); 
} 

$session = Mage::getSingleton('admin/session'); 
$session->setIsFirstVisit(false); 
$session->setUser($user); 
$session->setAcl(Mage::getResourceModel('admin/acl')->loadAcl()); 
Mage::dispatchEvent('admin_session_user_login_success',array('user'=>$user)); 

if ($session->isLoggedIn()) { 
    //Redirection vers le dashboard 
    $url = "/admin/dashboard/"; 
    header('Location: '.$url); 
} 
+0

我複製粘貼你的代碼,但它仍然無法正常工作,這不是」 t將我重定向到儀表板:/ – Erlaunis

+0

是否啓用了php錯誤報告? –