Потянув в сеанс Magento информация глючит - PullRequest
3 голосов
/ 16 июля 2010

Я добавляю информацию о сеансе Magento на пользовательскую страницу, используя следующую структуру кода:

require_once ( "../app/Mage.php" );
umask(0);
Mage::app("default");

Mage::getSingleton("core/session", array("name" => "frontend"));
$session = Mage::getSingleton("customer/session"); 
$test = array();
//print_r($session);

if($session->isLoggedIn()){
    Set some session variables
} //end session check

else {
    //They don't belong here.  Transfer them to a login page
    header("Location: http://www.mydomain.com/customer/account/login/");
} 

Большую часть времени он работает отлично, но время от времени кажется, что сессия не загружаетсяинформация иногда.Мой print_r выглядит так:

Mage_Customer_Model_Session Object
(
    [_customer:protected] => 
    [_isCustomerIdChecked:protected] => 
    [_skipSessionIdFlag:protected] => 
    [_data:protected] => Array
        (
            [_session_validator_data] => Array
            (
                    [remote_addr] => an.ip.addr.ess
                    [http_via] => 
                    [http_x_forwarded_for] => 
                    [http_user_agent] => Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 ( .NET CLR 3.5.30729)
                )

        [session_hosts] => Array
            (
                [www.mydomain.com] => 1
            )

    )

[_origData:protected] => 
[_idFieldName:protected] => 
[_isDeleted:protected] => 
)

Но если я оставлю тег header: location включенным, это приведет меня на страницу учетной записи, потому что я вошел в систему.

Кто-нибудь еще испытывал это?Как мне этого избежать?Я в тупике.

Ответы [ 4 ]

1 голос
/ 04 декабря 2011

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

1 голос
/ 19 июля 2010

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

require_once ( "../app/Mage.php" );
umask(0);
Mage::app("default");

$session = Mage::getSingleton("customer/session"); 

if($session->isLoggedIn()){
   var_dump($session->getData());
}
0 голосов
/ 02 апреля 2012

В моем случае оказалось, что расположение файла имеет большое значение.Я в основном пробовал код Kapil выше, с той разницей, что я поместил свой файл в корень magento.

Я хотел добавить свои два бита информации;надеюсь, это может ответить на ваш вопрос.

РЕДАКТИРОВАТЬ: я использовал код, похожий на Kapil.Если ваша пользовательская страница находится на отдельном поддомене, вам может потребоваться, чтобы ваш cookie-домен был правильно установлен в Magento Admin (пожалуйста, прочтите комментарии по этому вопросу: Как получить доступ к сеансу клиента Magento из-за пределов Magento? )

0 голосов
/ 21 апреля 2011

У меня возникла та же проблема, а затем я изменил Mage::app("default"); на просто Mage::app();, и, похоже, он работает как шарм.

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