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());
    }
Share:
18,877
Martin
Author by

Martin

Updated on June 05, 2022

Comments

  • Martin
    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
    Martin about 10 years
    hi, thx i tried, returns "Error" string. That means condition $customer->getId()>0 returns false.
  • Martin
    Martin about 10 years
    script is placed in simple file in magento root, not in the app/etc/... folder
  • Pushpendra
    Pushpendra almost 9 years
    Hi! 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
    Pushpendra almost 9 years
    Hi! 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
    Martin almost 9 years
    Try to clear your session in browser. You can do it by PHP code in script.