2015-06-02 13 views
6

ich diesen Code unten bin mit zur Login-Seite und leiten zu berücksichtigen:Magento: Login und Weiterleitungsseite von außen magento berücksichtigen

<?php 
include('store/app/Mage.php'); 
Mage::app(); 

if($_POST && $_POST['login']['username'] && $_POST['login']['password']){ 
    $email = $_POST['login']['username']; 
    $password = $_POST['login']['password']; 
    $session = Mage::getSingleton('customer/session'); 

     try { 

      $log = $session->login($email, $password); 
      $session->setCustomerAsLoggedIn($session->getCustomer()); 

      $customer_id = $session->getCustomerId(); 

      $send_data["success"] = true; 
      $send_data["message"] = "Login Success"; 
      $send_data["customer_id"] = $customer_id; 

      Mage::getSingleton('customer/session')->loginById($customer_id); 
      Mage_Core_Model_Session_Abstract_Varien::start(); 

     }catch (Exception $ex) { 
      $send_data["success"] = false; 
      $send_data["message"] = $ex->getMessage(); 
     } 

}else { 
    $send_data["success"]=false; 
    $send_data["message"]="Enter both Email and Password"; 
} 

echo json_encode($send_data); 

?> 

Und dann auf Datei aus, wo ich Ajax-Request mache, ich bin mit dieser Code:

if(data.success){ 
    window.location = "http://domain.com/store/customer/account/" 
} 

Aber es zeigt immer Benutzer als ausloggen, wenn ich richtig Kundennummer sowie Erfolg zu tun bekommen.

Antwort

1
$email = strip_tags($_GET["login"]); 
$password = strip_tags($_GET["psw"]); 

function loginUser($email, $password) { 

    umask(0); 
    ob_start(); 
    session_start(); 
    Mage::app('default'); 
    Mage::getSingleton("core/session", array("name" => "frontend")); 

    $websiteId = Mage::app()->getWebsite()->getId(); 
    $store = Mage::app()->getStore(); 
    $customer = Mage::getModel("customer/customer"); 
    $customer->website_id = $websiteId; 
    $customer->setStore($store); 
    try { 
     $customer->loadByEmail($email); 
     $session = Mage::getSingleton('customer/session')->setCustomerAsLoggedIn($customer); 
     if($session->login($email, $password)){ return true;} else { }; 
    }catch(Exception $e){ 
     return $e->getMessage(); 
    } 


     } 



if (loginUser($email,$password) == 1) { 
echo ".. user loged as ".Mage::getSingleton('customer/session')->getCustomer()->getName()."<br>";} else { 
//bad things goes here 
} 
+0

Können Sie mir sagen, was ich in meinem Code bin fehlt? Weil ich in der Lage bin, Kundenname aber immer noch zu bekommen, wenn ich den Laden besuche, es zeigt Benutzer immer noch nicht eingeloggt. – atif

+0

Ich denke, Sie sind nicht gerade eingeloggt, nur Sitzung gespeicherte Informationen aufgerufen, (erstellt Browser-Login-Sitzung und gespeichert in Magento-Sitzung) aus mehreren Gründen. Zuerst müssen Sie den Sitzungsstart verwenden. Zweitens müssen Sie speichern und müssen Admin-Sitzung haben, laden Magento Core Session Controller. etc etc ... Verwenden Sie einfach Funktion in meiner Antwort und es wird funktionieren ... – Martin

+0

Ich bekomme die Nachricht ".. Benutzer als USERNAME" aber immer noch, wenn ich versuche, die Store-Account-Seite zu besuchen, leitet es mich zur Anmeldeseite um . – atif

1

In meinem Fall Martins Code funktioniert, wenn ich den Sitzungsnamen

session_name('frontend'); 
session_start(); 

ändern Wenn Sie den Sitzungsnamen allein es standardmäßig PHPSESSID verlassen, die nicht die gleiche wie die von Magento auf einem Handbuch erstellt ist Login und funktionierte nicht in meiner Installation. Das kann variieren, versuche dich manuell anzumelden und überprüfe deine Cookie-Namen.

session_name Dokumentation: http://php.net/manual/en/function.session-name.php