STRANGENНе удалось получить элементы корзины в magento на пользовательской странице (только когда клиент вошел в систему)

Вот стандартный код, который я использую для получения элементов корзины и их атрибутов, который работает только тогда, когда клиент не вошел в систему. Как только я вхожу в систему, используя свою учетную запись, этот скрипт перестает работать и не возвращает элементы в корзине. Также количество элементов корзины также равно 0. Но как только я закрываю браузер (сеанс заканчивается ...), и скрипт возвращает элементы корзины правильно! Очень странно, я не смог выяснить причину. Пожалуйста, направляйте, кто-нибудь?

require_once('../app/Mage.php') ;
umask(0);
Mage::app();
Mage::getSingleton('core/session', array('name'=>'frontend'));

$session = Mage::getSingleton('checkout/session');
$items = $session->getQuote()->getAllVisibleItems();
foreach ($items as $item) {
//$canProceed=0;
echo $productname = $item->getName();   //HERE IS THE COMPLETE CODE:<?php 
ini_set('display_errors',true);
require_once('../app/Mage.php') ;
Mage::setIsDeveloperMode(true);
umask(0);
Mage::app();


  //Getting buyer's country label

 $bcountry1 =  $_REQUEST['country']; //gets country code

$_countries = Mage::getResourceModel('directory/country_collection')
                                ->loadData()
                                ->toOptionArray(false);

foreach($_countries as $_country){
if ($_country['value']==$bcountry1){$bcountry = $_country['label'];}
}
//Fetching vendor for each product

$config  = Mage::getConfig()->getResourceConnectionConfig("default_setup");

$dbinfo = array("host" => $config->host,
        "user" => $config->username,
        "pass" => $config->password,
        "dbname" => $config->dbname    );

$hostname = $dbinfo["host"];
$user2 = $dbinfo["user"];
$password = $dbinfo["pass"];
$dbname = $dbinfo["dbname"];


$dbhandle = mysql_connect($hostname,$user2,$password) or die("Unable to connect"); 
$selected = mysql_select_db("myart2",$dbhandle);


$Proceed=0;

//Getting all products in the cart
//echo $cart = Mage::getSingleton('checkout/cart')->getItemsCount();
// Secret Sauce - Initializes the Session for the FRONTEND
// Magento uses different sessions for 'frontend' and 'adminhtml'
Mage::getSingleton('core/session', array('name'=>'frontend'));

$session = Mage::getSingleton('checkout/session');
$items = $session->getQuote()->getAllVisibleItems();
foreach ($items as $item) {
//$canProceed=0;
$productname = $item->getName();

$product = Mage::getModel('catalog/product')->loadByAttribute('sku',     $item->getSku(), array('manufacturer'));
    $manufacturer =   $product->getResource()->getAttribute('manufacturer')->getFrontEnd()->getValue($product);


 $qry="select * from vendors WHERE company_name='$manufacturer'";
$result =  mysql_query($qry) or die("Unable to run select query");
  $row = mysql_fetch_array($result) or die("Unable to fetch data");

if( strcasecmp($row['country'],$bcountry)!=0 && $row['ships_abroad']!=1)
{$Proceed=1;$productnames[]=$productname;}
}

if($Proceed==1)
{
echo implode(',',$productnames);
}
else {echo 1; }
?>

person webmaker1    schedule 31.12.2012    source источник
comment
пытались использовать firebug, чтобы увидеть запрос и ответ?   -  person Zaffar Saffee    schedule 31.12.2012
comment
У кого-то была похожая проблема, но решение не найдено.... stackoverflow.com/questions/5512090/ Прочитать комментарий 1   -  person webmaker1    schedule 31.12.2012
comment
@NewBee Нет ошибок на вкладке сети firebug   -  person webmaker1    schedule 31.12.2012
comment
где находится этот код? когда и как вы назвали этот код?   -  person ivantedja    schedule 31.12.2012
comment
@ivantedja код находится в пользовательском файле .php, который я вызываю с помощью AJAX с помощью кнопки «Продолжить» на phtml проверки адреса доставки (shipping.phtml)   -  person webmaker1    schedule 01.01.2013
comment
добавлен полный код.... может быть что-то еще возиться с сеансом.....??   -  person webmaker1    schedule 01.01.2013


Ответы (1)


Я протестировал следующие четыре основных перестановки, и код работает на стандартном экземпляре CE1.7 во всех случаях:

  • Создать гостевую цитату
  • Преобразование гостевой цитаты в цитату клиента через вход в систему
  • Создать существующую цитату клиента через логин
  • Объедините цитату гостя с цитатой клиента через логин

Настройте параметры среды сервера и приложения следующим образом, чтобы просмотреть и исключить любые ошибки (редактировать – добавлен полный скрипт; обратите внимание на закрывающий "}"):

<?php

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors',true);
require_once('../app/Mage.php') ;
Mage::setIsDeveloperMode(true);
umask(0);
Mage::app();

$session = Mage::getSingleton('checkout/session');
$items = $session->getQuote()->getAllVisibleItems();

foreach ($items as $item) {
    //$canProceed=0;
    echo $productname = $item->getName();
}
person benmarks    schedule 31.12.2012
comment
попробовал приведенный выше код, ошибок нет. Есть ли проблема с моей установкой magento? Спасибо за тестирование для меня - person webmaker1; 01.01.2013
comment
Отредактировано. Попробуйте именно этот код - у вас отсутствует фигурная скобка. - person benmarks; 01.01.2013
comment
Наверное, я пропустил фигурную скобку здесь. Я проверил код в Dreamweaver, в коде нет ошибок. Помните, что это работает для гостевого покупателя, но не работает для вошедшего в систему пользователя... - person webmaker1; 01.01.2013
comment
Ах, верно. Что ж, должна быть проблема с вашей установкой. Я бы порекомендовал скопировать БД, установить стандартную версию Magento, а затем попробовать скрипт выше. Таким образом, вы можете исключить БД. Еще одна вещь может быть настройка пути файла cookie; можно ли получить доступ к какой-либо информации о клиенте в контексте этого скрипта? - person benmarks; 01.01.2013