Magento:从magento

时间:2015-06-02 20:04:38

标签: magento

我使用以下代码登录并重定向到帐户页面:

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

?>

然后在我发出ajax请求的文件中,我正在使用此代码:

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

但它始终将用户显示为退出,但我确实获得了正确的客户ID以及成功。

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:1)

在我的情况下,如果我更改会话名称,Martin的代码就可以运行

session_name('frontend');
session_start();

如果单独保留会话名称,则默认PHPSESSID与手动登录时Magento创建的PHPSESSID不同,并且在我的安装中不起作用。这可能会有所不同,请尝试手动登录并检查您的Cookie名称。

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