Prestashop 1.6 сессия / cookie с умом

В моем prestashop пользователь (который не является клиентом или администратором) может создать «побочную» учетную запись (это не учетная запись prestashop), чтобы сделать что-то особенное на сайте.

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

Я ищу способ сохранить данные, и единственное, что я вижу, это умные куки. Хорошо, но я не могу контролировать время жизни этого печенья. И мне нужен этот cookie, чтобы умереть, когда пользователь закрывает браузер.

Итак, я попытался сделать сеанс, но я не могу заставить его работать, и я не нашел способ сделать cookie, которые не длятся долго.

У кого-нибудь есть идея сделать сеанс, подобный данным, или управлять продолжительностью жизни куки?

Спасибо

4

Решение

Вы можете использовать CookieCore учебный класс

//to write
$cookie = new Cookie('my_cookie'); //make your own cookie
$cookie->setExpire(time() + 20 * 60); // 20 minutes for example
$cookie->variable_name = 'hello';
$cookie->write();

//to read
$cookie = new Cookie('my_cookie');
echo $cookie->variable_name;
//hello
6

Другие решения

Я добавлю к сообщению UnLoCo.

Для людей, которые ищут печенье, которое умирает в конце сеанса, просто установите

$cookie->setExpire(0);

NB. Cookie умирает только тогда, когда браузер полностью закрыт (у меня есть фидлинг, который позволяет браузеру открываться, поэтому я обнаружил ошибку)

И последнее, если вы хотите убить печенье самостоятельно

$cookie = new Cookie('my_cookie');
$cookie->variable_name = null;
$cookie->write();
3

Пробовал с Prestashop 1.6.1.x

Исходное сообщение с небольшими исправлениями
http://vblanch.com/get-the-contact-email-in-prestashop-shop-name-and-set-values-in-cookies/

Если вам также необходимо поместить значения в куки:

$this->context->cookie->__set('name_of_your_key', $your_value);

Чтобы получить значение из шаблона smarty (.tpl):

{$cookie->name_of_your_key}

Из PHP (внутри контроллера):

$this->context->cookie->name_of_your_key

Снаружи контроллера:

$context = Context::getContext();
$context->cookie->name_of_your_key;
0

Вы можете использовать SESSION в Prestashop только с этими параметрами $_SESSION['VIEW']
Другие сессии должны быть уничтожены

0
По вопросам рекламы [email protected]