2013-07-09 1 views
0

Voici le problème: J'utilise un script pour créer un utilisateur dans Magento et essayer de se connecter à cet utilisateur s'il existe déjà.Magento. Client en ligne, mais pas connecté

try { 
     // If new, save customer information 
$customer -> firstname = $firstname; 
    $customer -> lastname = $lastname; 
    $customer -> email = $email; 
    $customer -> password_hash = md5($password); 
    if ($customer -> save()) { 
     echo $customer -> firstname . " " . $customer -> lastname . " information is saved!"; 
     $customer->setConfirmation(null); 
     $customer->save(); 
    } else { 
     echo "An error occured while saving customer"; 
    } 
} catch(Exception $e) { 
    // If customer already exists, initiate login 
    if (preg_match('/This customer email already exists/', $e)) { 
     $customer -> loadByEmail($email); 
     $session = Mage::getSingleton('customer/session'); 
     $session -> login($email, $password); 
     echo $session -> isLoggedIn() ? $session -> getCustomer() -> getName() . ' is online!' : 'not logged in'; 
    } 
} 

le script Echoes « utilisateur est en ligne! », Mais quand je vais à la page principale, il me montre le bouton de connexion, comme si je ne suis pas connecté. Comment puis-je me connecter à l'utilisateur?

Répondre

0

Avez-vous défini l'identifiant de site Web?

Vous pouvez également vérifier si le client existe par loadByEmail

$customer = Mage::getModel('customer/customer'); 

$customer->setWebsiteId(Mage::app()->getWebsite()->getId()); 

$customer->loadByEmail($email); 

// This customer email exists 
if($customer->getId()){ 
    Mage::getSingleton('core/session', array('name' => 'frontend')); 
    Mage::getSingleton('customer/session')->setCustomerAsLoggedIn($customer); 
} 
else{ 
    ..... 
    $customer->save(); 
} 

ou

$customer = Mage::getModel('customer/customer'); 
$customer->setWebsiteId(Mage::app()->getWebsite()->getId()); 
$customer->loadByEmail($email); 

if(!$customer->getId()){ 
    $customer->setFirstname($firstname); 
    $customer->setLastname($lastname); 
    ..... 
    $customer->save(); 
} 

Mage::getSingleton('core/session', array('name' => 'frontend')); 
Mage::getSingleton('customer/session')->setCustomerAsLoggedIn($customer); 

Voir

+0

non, ça n'a pas marché. Le client semble être connecté, mais il/elle n'est pas authentifié (e), la requête ne démarre pas –

+0

Avez-vous ajouté 'Mage :: getSingleton ('core/session', array ('name' => 'frontend'));? voir http://stackoverflow.com/questions/16478013/customer-session-is-empty-in-custom-module-magento –

Questions connexes