0

我在一个站点上有 2 个目录,dir1 和 dir2,我需要它来执行此操作:当脚本从 dir1 写入会话时,无法从 dir2 读取它。那可能吗?我试过session_set_cookie_params(0,'/dir1/')了,但无论如何你都可以从 dir2 访问这个会话变量。

4

2 回答 2

0

这通常是通过命名空间完成的。您应该将会话命名空间(简单字符串标识符)分配给您的请求,然后提供一些包装器以基于此命名空间访问您的会话。

什么是会话命名空间?只是一个包含关联数组的会话属性,然后它充当您的会话。您的会话将如下所示:

$_SESSION (
    "DIR1_NAMESPACE" => array(),
    "DIR2_NAMESPACE" => array(),
)

现代 PHP 框架通常支持会话命名空间(例如http://framework.zend.com/manual/2.1/en/modules/zend.session.container.html)。

所以最后你不需要存储完全分离的会话。您只需将现有会话拆分为多个存储。

于 2013-06-07T17:01:07.777 回答
0

$_SESSION是全局变量,我不确定是否可以控制特定目录的可用性,但可能有点想法:

if( __DIR__ === 'dir2' )
{
   unset($_SESSION['from']['dir1']);
}
于 2013-06-07T16:06:37.757 回答