有没有办法为特定路径保存PHP会话?

时间:2013-06-07 15:42:40

标签: php session

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

2 个答案:

答案 0 :(得分:0)

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

if( __DIR__ === 'dir2' )
{
   unset($_SESSION['from']['dir1']);
}

答案 1 :(得分:0)

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

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

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

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

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