2017-07-31 18 views
6

Kullanıcıları program aracılığıyla magento admin'e kaydetmek istiyorum. Yönetici sayfası bir iframe içerisindedir ve kimlik doğrulama olmadan otomatik olarak yönetici kontrol paneline yönlendirmelidir. Eski bir yazı içinde bulunan bir kod kullandım ve magento çekirdek kaynağıyla eşleşiyor. kodudur:Program aracılığıyla magento yönetici bağlantısı çalışmıyor

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); 
    } 

Verileri var_dump(), kullanıcı var ve bu firstname, kimlik vb gibi tüm bilgileri var ve hepsi doğru. Kod, son if'un içine giriyor ve $session'un doğru bir şekilde giriş yapılabilmesi için 'index.php/admico/dashboard'a yönlendiriyorsunuz. Ancak, yine de, ön oturum, oturumun oturum açmamış gibi oturum şeklini gösteriyordu. yönetici

Birisi neyin yanlış olduğunu anlamaya yardım edebilir mi lütfen?

cevap

0

Pencere, son koşulunuzda yeniden yönlendirildiğinde, iframe web sitenizdeki oturum açma oturumuna erişemez. PHP header işlevini kullandığınızı görüyorum. Düşünebileceğim tek çözüm, oturum oturumunun SID'sini alıp bunu bir URL parametresi olarak kullanmaktır. Yani koşullu içindeki bazı Düzenlenen kodu şöyle görünecektir:

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

Bu işe yaramazsa, saklanan veri olarak $session ile PHP fonksiyonunu setcookie() kullanmayı deneyin ve sonra yönlendirmeyi deneyebilirsiniz. Bu here için belgeleri bulabilirsiniz. Senin için sahip olduğum her şey bu. Bu işe yaramazsa, this'a bakmayı deneyin ve size yardımcı olabilecek bir şey olup olmadığını görün. İyi şanslar!

+0

üzgünüm, ama çalışmıyor:/ – Erlaunis

0

Kodda iki değişiklik yaptım ve firefox, safari ve kromda benim için iyi çalışıyor. Bu kodu denemeden önce çerezlerimi de temizledim.

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

Ben kodunuzu yapıştırılan çoğaltılamaz ama hala çalışmıyor, bu kokan Beni kontrol paneline yönlendir:/ – Erlaunis

+0

Php hata raporlama özelliği etkin mi? –

İlgili konular