是否有一种方法可以将PHP会话保存到特定的路径


Is there a way to save a PHP session for a specific path?

我在站点上有两个目录,dir1和dir2,我需要它这样做:当脚本从dir1写入会话时,它不能从dir2读取。这可能吗?我尝试了session_set_cookie_params(0,'/dir1/'),但无论如何,您可以从dir2访问此会话变量。

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

什么是会话命名空间?只是一个会话属性,它持有关联数组,然后充当您的会话。你的会话看起来像这样:

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

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

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

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

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