2015-06-02 12 views
6

Sto usando questo sotto il codice per il login e reindirizzare alla pagina conto:Magento: Login e reindirizzare alla pagina account da Magento fuori

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

?> 

E poi in archivio da dove sto facendo richiesta AJAX, sto usando questo codice:

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

Ma mostrano sempre utente come il logout, se io capisco corretto id cliente così come il successo.

risposta

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

mi puoi dire quello che mi manca nel mio codice? Perché sono in grado di ottenere il nome cliente ma ancora quando visito il negozio, mostra all'utente che non ha ancora effettuato il login. – atif

+0

Penso che tu non sia esattamente loggato, solo chiamando le informazioni memorizzate della sessione, (creato la sessione di login del browser e memorizzato in sessione magento) per più motivi. Per prima cosa devi usare l'inizio della sessione. In secondo luogo, è necessario impostare l'archivio e deve avere la sessione di amministrazione, caricare il controller di sessione nucleo di Magento. etc etc ... Basta usare la funzione nella mia risposta e funzionerà ... – Martin

+0

Ricevo il messaggio ".. utente registrato come USERNAME" ma ancora quando provo a visitare la pagina dell'account del negozio, mi reindirizza alla pagina di accesso . – atif

1

Nel mio caso il codice di Martin funziona se cambio il nome della sessione

session_name('frontend'); 
session_start(); 

Se si lascia il nome della sessione da solo default PHPSESSID che non è lo stesso di quello creato da Magento su un manuale login e non ha funzionato nella mia installazione. Ciò può variare, provare ad accedere manualmente e controllare i nomi dei cookie.

documentazione

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

Problemi correlati