2017-07-31 17 views
6

Tôi muốn đăng nhập một người dùng theo lập trình tới quản trị viên Magento. Trang quản trị nằm trong khung nội tuyến và nó phải tự động chuyển hướng đến trang tổng quan quản trị mà không cần xác thực. Tôi đã sử dụng một mã được tìm thấy trong một bài cổ và nó phù hợp với nguồn lõi magento. Mã này là:Kết nối quản trị magento lập trình không hoạt động

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

Khi tôi var_dump() dữ liệu, người dùng tồn tại và nó có tất cả các thông tin như firstname, id, vv và đó là tất cả chính xác. Mã bên trong if cuối cùng và chuyển hướng đến 'index.php/admico/dashboard' để $session được đăng nhập chính xác. Tuy nhiên, trang chủ hiển thị biểu mẫu kết nối như thể phiên không được đăng nhập và không phải là trang tổng quan quản trị viên.

Ai đó có thể giúp tôi tìm ra điều gì sai không?

Trả lời

0

Có thể khi cửa sổ được chuyển hướng trong điều kiện cuối cùng của bạn, khung nội tuyến không thể truy cập phiên đăng nhập đó trên trang web của bạn. Tôi thấy rằng bạn đang sử dụng hàm PHP header. Giải pháp duy nhất mà tôi có thể nghĩ đến là bằng cách lấy SID của phiên đăng nhập và sử dụng nó làm tham số URL. Vì vậy, một số mã đã chỉnh sửa bên trong có điều kiện của bạn sẽ trông như thế này:

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

Nếu điều đó không làm việc, bạn có thể thử bằng cách sử dụng chức năng PHP setcookie() với $session như các dữ liệu được lưu trữ và sau đó cố gắng chuyển hướng. Bạn có thể tìm tài liệu cho số here đó. Đó là tất cả những gì tôi có cho bạn. Nếu cách này không hiệu quả, hãy thử xem this và xem có bất kỳ điều gì có thể giúp bạn không. May mắn nhất!

+0

Xin lỗi, nhưng nó không hoạt động:/ – Erlaunis

0

Tôi đã thực hiện hai thay đổi trong mã và nó hoạt động tốt cho tôi trên firefox, safari và chrome. Tôi cũng đã xóa cookie của mình trước khi tôi thử mã này.

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ôi sao chép dán mã của bạn nhưng nó vẫn không hoạt động, nó doesn' t chuyển hướng tôi đến trang tổng quan:/ – Erlaunis

+0

Báo cáo lỗi php có được bật không? –

Các vấn đề liên quan