Magento Session для конкретного клиента

Работаем на Localhost. Я хочу сохранить значение сеанса для каждого конкретного клиента.

Когда я сохраняю свое значение в Mage::getSingleton('core/session')->setMyVal('something'), у всех клиентов появляется одно и то же значение. Я испугался, когда увидел это ... Это было похоже на захват сеанса клиента. Я хочу, чтобы сеанс был частным для каждого клиента.

Когда я использовал Mage::getSingleton('customer/session')->setMyVal('something'), я получил это "что-то", используя учетную запись клиента, а затем вышел из системы и вошел в систему с другим клиентом, и я снова увидел то же самое "что-то" ...

Например, если я хочу сохранить «дата и время входа в систему», оно, конечно, должно быть разным для каждого клиента. Или я не понимаю, как работают сеансы PHP.


person Nikitas    schedule 25.12.2013    source источник
comment
Сеансы привязаны к сеансам браузера. Возможно, что даже при выходе из системы сеанс не полностью разрушен, но все еще может быть доступен с этого компьютера с этим сеансом браузера, но он должен быть доступен для всех остальных. Вам следует попробовать открыть одну и ту же страницу в разных браузерах или в другом в режиме инкогнито и посмотреть, остались ли значения такими же. Идентификатор сеанса хранится в файле cookie   -  person Jompper    schedule 26.12.2013
comment
Действительно, когда я вхожу в систему из 2 разных браузеров с 2 разными клиентами ИЛИ, если я удаляю этот файл cookie внешнего интерфейса, все работает так, как ожидалось. Пожалуйста, опубликуйте свой ответ ниже, чтобы я отметил его как правильный ответ.   -  person Nikitas    schedule 26.12.2013
comment
Итак, если я вхожу в магазин Magento с общедоступного компьютера и делаю заказ, то, если кто-то другой входит с того же компьютера в тот же магазин, используя другую учетную запись клиента, можно увидеть мои личные данные сеанса ...? Возможно, это одна из причин, по которой приложения Банка предлагают не входить в систему с общедоступного компьютера.   -  person Nikitas    schedule 26.12.2013


Ответы (3)


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

Если вы хотите уничтожить сеанс при входе в систему, найдите обработчик выхода из Magento и добавьте session_destroy (); там или отключите там свои пользовательские переменные сеанса.

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

person Jompper    schedule 26.12.2013
comment
Да, но в моем случае мне нужно вывести / показать клиенту конкретное значение сеанса. Вот почему я хотел убедиться, что он будет повторно отправлен в частном порядке. - person Nikitas; 26.12.2013

может быть, это поможет вам с небольшими сложностями

$sess_var = array (
     "custId" => Mage::getSingleton('customer/session')->getCustomer()->getId(),
     "value"=> "your value here"
);

Mage::getSingleton('customer/session')->setMyVal($sess_var)
person Ansyori    schedule 26.12.2013

Вы можете использовать идентификатор клиента при сохранении сеанса для клиента (как упоминалось Ансиори), но обязательно уничтожьте его при выходе из системы.

person Nafee    schedule 26.12.2013