例如,我想在会话中创建“命名空间”,该命名空间应该在浏览器关闭之前有效。
$_SESSION['other_data'] = array(...)
- 在会话有效之前有效
$_SESSION['valid_until_browser_is_closed'] = array(...)
- 在浏览器关闭之前有效。
我看到的唯一“解决方案”是创建额外的cookie,在浏览器关闭时将显示。访问$_SESSION['valid_until_browser_is_closed']
时,我们应首先检查此cookie的存在情况。当然,我们应该将会话包装到某种类中。
谢谢
答案 0 :(得分:1)
会话将在客户端24小时不活动后自动过期。此外,在浏览器关闭时,将删除设置到客户端浏览器中的cookie。
要确保删除cookie,您应该尝试这样做:
session_set_cookie_params(0); // lifetime
你应该注意到你应该在开始会话之前调用这个函数,如手册中所述:
session_set_cookie_params(0);
session_start();
使用这些功能,您正在编辑session.cookie_lifetime
文件中的php.ini
参数(引自文档):
session.cookie_lifetime指定 cookie的生命周期 这是发送到浏览器。该 值0表示“直到浏览器为止 关闭。“默认为0。
至于你可以使用的命名空间(已经由Jon Skarpeteig发布)一个二维数组:
$_SESSION['namespace']['var'] = 'value';
参考文献:
答案 1 :(得分:0)
在会话中执行命名空间的方法是使用二维数组,如:
$_SESSION['namespace']['foo'] = 'bar';
然后,您可以通过以下方式使名称空间无效:unset($_SESSION['namespace']