Php 带smarty的Prestashop 1.6会话/cookie

Php 带smarty的Prestashop 1.6会话/cookie,php,session,cookies,smarty,prestashop,Php,Session,Cookies,Smarty,Prestashop,在我的prestashop中,用户(不是客户或管理员)可以创建一个“side”帐户(不是prestashop帐户),在站点上执行一些特殊的操作 我已经创建了一切可以做到这一点,但当用户连接时,我无法在会话期间保留数据 我一直在寻找一种保存数据的方法,我唯一看到的就是smarty cookie。我很好,但我无法控制饼干的寿命。当用户关闭浏览器时,我需要这个cookie消失 所以我试着做了一个训练,但我无法让它工作,我也没有找到一种方法来做一个不能持久的曲奇 有没有人想到像数据一样进行会话,或者处理

在我的prestashop中,用户(不是客户或管理员)可以创建一个“side”帐户(不是prestashop帐户),在站点上执行一些特殊的操作

我已经创建了一切可以做到这一点,但当用户连接时,我无法在会话期间保留数据

我一直在寻找一种保存数据的方法,我唯一看到的就是smarty cookie。我很好,但我无法控制饼干的寿命。当用户关闭浏览器时,我需要这个cookie消失

所以我试着做了一个训练,但我无法让它工作,我也没有找到一种方法来做一个不能持久的曲奇

有没有人想到像数据一样进行会话,或者处理cookie的生命周期


谢谢

您可以使用
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

我要在UnLoCo的信息中添加内容

对于正在寻找在课程结束时死亡的cookie的人,只需将

$cookie->setExpire(0);
注意,只有当浏览器完全关闭时,cookie才会消失(我有一个扩展feedly,它允许浏览器打开,所以我认为有一个bug)

最后一件事,如果你想自己杀死饼干

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

试用Prestashop 1.6.1.x

原稿,修改很少

如果您还需要将值放入cookie中:

$this->context->cookie->__set('name_of_your_key', $your_value);
要从smarty模板(.tpl)获取值,请执行以下操作:

从PHP(控制器内部):

控制器外部:

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

您只能将Prestashop中的会话与此参数一起使用
$\u SESSION['VIEW']

其他会话已被销毁

要删除所有cookie数据,您可以使用
$cookie->logout()
写入()之前
$context = Context::getContext();
$context->cookie->name_of_your_key;