Клиент / сеанс Magento не работает - PullRequest
2 голосов
/ 27 марта 2012

Эта проблема впервые появилась, когда на странице истории заказов (* / sales / order / history /) во внешнем интерфейсе отображалось только короткое сообщение: вы не разместили заказов.

После некоторой отладки выясняется, что проблема заключается в этой функции:

Mage::getSingleton('customer/session')

Он не возвращает сущность сеанса, содержащую информацию о текущем клиенте, кроме идентификатора веб-сайта, поэтому сбор заказов возвращает пустой результат после фильтрации по идентификатору клиента.

На самом деле в Stack Overflow есть пост, в котором обсуждается похожая проблема: Сеанс клиента отличается в разных частях веб-сайта Magento , Но это не дало хорошего объяснения.

И что сбивает с толку, так это то, что в моем случае функция работает хорошо в некоторых частях, но не в других. Например, я вставил

<?php echo var_export(Mage::getSingleton('customer/session')->getCustomerId(), true) ?>  

в шаблон списка товаров каталога, и он отображает идентификатор клиента после входа в систему. Но эта же строка возвращает Null на странице истории заказов.

Я нашел эти коды в app / code / core / Mage / Customer / Model / Session.php

public function getCustomer()
{
    ...
    $customer = Mage::getModel('customer/customer')
        ->setWebsiteId(Mage::app()->getStore()->getWebsiteId());
    if ($this->getId()) {
        $customer->load($this->getId());
    }
    $this->setCustomer($customer);
    return $this->_customer;
}

После установки идентификатора веб-сайта загружается объект клиента в зависимости от $ this-> getId ().

Почему атрибут id объекта сеанса клиента не всегда действителен? Может кто-нибудь поделиться своими знаниями, пожалуйста. Большое спасибо.

Ответы [ 4 ]

1 голос
/ 22 сентября 2017

Интересно, почему пользователь не будет перенаправлен на страницу входа (customer / account / login /), когда сеанс клиента пуст и вы посещаете страницу истории. Пожалуйста, проверьте, были ли настроены Mage_Customer или Mage_Sales.

Если он был переписан, это будет первое место для проверки.

1 голос
/ 25 апреля 2013

Если вы используете Google Chrome, вы можете щелкнуть правой кнопкой мыши на странице, выбрать Проверка элемента , затем вкладку Ресурсы , найдите Cookies внизв левом меню и щелкните по своему доменному имени.

Под доменным именем будут отображаться файлы cookie, которые были для него установлены, а также путь, срок действия и т. д. Очень полезно.

В вашем случае вы ищете сеансовый файл cookie frontend в разделе «имя».Вы можете удалить его и обновить страницу, чтобы увидеть, воссоздает ли Magento его, и в этом случае сеансы работают как пробники.Надеюсь, что это поможет:)

PS: Magento использует сессии очень интенсивно, если они сломаны, другие вещи будут ломаться на протяжении всего шоу.

1 голос
/ 29 марта 2012

Я был бы осторожен с Magento, предполагая, что проблема заключается в одной конкретной области.Вы можете спуститься в довольно глубокую кроличью нору, прежде чем поймете, что нужно начинать все сначала.

Если вы уверены, что проблема заключается в получателе сеанса, попробуйте следующее:

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

Но я бы также продолжал искать другие варианты.Похоже, проблемы, с которыми многие люди сталкиваются с кэшированием.Попробуйте сделать то же самое с отключенным кэшированием.Кэш полной страницы может делать неожиданные вещи со значениями переменных.

Из какого файла вы получаете эхо в вашем примере?Мне нужно знать это, прежде чем помогать.

0 голосов
/ 20 сентября 2017

Я собираюсь взорвать этот ответ на некоторые из этих вопросов Мага, потому что никто не упоминает, что куки могут быть неправильно настроены.Мы потратили впустую утро на это после того, как импортировали обновление БД, которое имело неправильный cookie-домен .

. Убедитесь, что в таблице core_config_data указаны правильные значения для этого значения пути:

web/cookie/cookie_domain

Домен должен совпадать с тем, что есть в URL.

https://www.myawesomemagentosite.com

web/cookie/cookie_domain = .myawesomemagentosite.com
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...