Magento customer login programmatically
18,877
Solution 1
<?php
function loginUser( $email, $password )
require_once ("app/Mage.php");
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);
$session->login($email, $password);
}catch(Exception $e){
}
}
?>
Solution 2
Martin,please try below code...
require_once "app/Mage.php";
Mage::app('default');
umask(0);
Mage::getSingleton('core/session', array('name' => 'frontend'));
$session = Mage::getSingleton('customer/session');
$session->start();
if (!empty($email) && !empty($password )) {
try {
$session->login($email, $password );
if ($session->getCustomer()->getIsJustConfirmed()) {
$this->_welcomeCustomer($session->getCustomer(), true);
}
} catch (Mage_Core_Exception $e) {
switch ($e->getCode()) {
case Mage_Customer_Model_Customer::EXCEPTION_EMAIL_NOT_CONFIRMED:
$value = Mage::helper('customer')->getEmailConfirmationUrl($email);
$message = Mage::helper('customer')->__('This account is not confirmed. <a href="%s">Click here</a> to resend confirmation email.', $value);
break;
case Mage_Customer_Model_Customer::EXCEPTION_INVALID_EMAIL_OR_PASSWORD:
$message = $e->getMessage();
break;
default:
$message = $e->getMessage();
}
$session->addError($message);
$session->setUsername($email);
} catch (Exception $e) {
// Mage::logException($e); // PA DSS violation: this exception log can disclose customer password
}
} else {
$session->addError('Login and password are required.');
}
With Out password login
try{
$customer = Mage::getModel("customer/customer");
$customer->setWebsiteId(Mage::app()->getWebsite()->getId());
$customer->loadByEmail($email); //load customer by email i
/* if customer has ,then login */
if($customer->getId()>0){
$userSession = Mage::getSingleton('customer/session');
$userSession->setCustomer($customer);
Mage::dispatchEvent('customer_login', array('customer'=>$customer));
}else{
echo "Error";
}
}catch(Exception $e)
{
print_r($e->getMessage());
}
Author by
Martin
Updated on June 05, 2022Comments
-
Martin almost 2 years
I have the code:
function loginUser( $email, $password ) { /** @var $session Mage_Customer_Model_Session */ $session = Mage::getSingleton( 'customer/session' ); try { $session->login( $email, $password ); $session->setCustomerAsLoggedIn( $session->getCustomer() ); return 1; } catch( Exception $e ) { return $e; } } $test = loginUser("login","password"); echo "test"; print_r($test); die;
but I always get
Mage_Core_Exception Object ( [_messages:protected] => Array ( ) [message:protected] => Invalid login or password.
Login and password is correct, I tried many accounts, with the same result.
How can I log in correctly?
-
Martin about 10 yearshi, thx i tried, returns "Error" string. That means condition $customer->getId()>0 returns false.
-
Martin about 10 yearsscript is placed in simple file in magento root, not in the app/etc/... folder
-
Pushpendra almost 9 yearsHi! I logged In as customer the I add a product to cart after that if I logged out and then again I add product as guest. The product add to previous logged out user. Do you have any Idea What is happening?
-
Pushpendra almost 9 yearsHi! I logged In as customer the I add a product to cart after that if I logged out and then again I add product as guest. The product add to previous logged out user. Do you have any Idea What is happening?
-
Martin almost 9 yearsTry to clear your session in browser. You can do it by PHP code in script.