在浏览器关闭之前,如何在会话中创建“命名空间”?

时间:2011-04-18 12:01:15

标签: php

例如,我想在会话中创建“命名空间”,该命名空间应该在浏览器关闭之前有效。

$_SESSION['other_data'] = array(...) - 在会话有效之前有效 $_SESSION['valid_until_browser_is_closed'] = array(...) - 在浏览器关闭之前有效。

我看到的唯一“解决方案”是创建额外的cookie,在浏览器关闭时将显示。访问$_SESSION['valid_until_browser_is_closed']时,我们应首先检查此cookie的存在情况。当然,我们应该将会话包装到某种类中。

谢谢

2 个答案:

答案 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']