相同的域,不同的文件夹PHP会话

时间:2011-03-29 22:20:10

标签: php session

我想根据用户所在的文件夹设置不同的会话ID。

例如,我有域https://example.com,其中包含文件夹/ app1,/ app2等,然后是每个应用程序文件夹中的多个文件。我想设置一个会话ID,用于app1中的所有文件,以及在app2中使用的不同会话ID。

可以这样做吗?

5 个答案:

答案 0 :(得分:4)

使用session_set_cookie_params在会话Cookie中设置路径。当然是session_start之前。

答案 1 :(得分:3)

如果/app1/app2包含完全不相关的应用程序,则可以使用PHP的session_name()函数在两者上建立完全不相关的会话。通常,会话使用名为PHPSESSID的cookie。相反,在/app1中,您可以session_name('session_app_1')运行,/app2可以运行session_name('session_app_2')。现在两个应用程序中的会话将完全不相关。

警告: PHP的documentation表示session_name()功能很昂贵。也许在繁忙的应用程序中使用默认名称保留会话,并仅在更安静的应用程序中重命名。

答案 2 :(得分:0)

你可以使用$_SESSION var是一个数组的想法:

$_SESSION['app1'] = ...
$_SESSION['app2'] = ... //etc etc

答案 3 :(得分:0)

我不确定我是否正确理解了这个问题,但您可以尝试检查路径以查看它是否在app1,app2等中,然后获取您感兴趣的字符串部分并将其用于设置您的会话,例如使用$_SERVER['REQUEST_URI']$_SERVER['SCRIPT_NAME']

除非你已经这样做了,而你的问题是它不会设置会话?

答案 4 :(得分:0)

将session_save_path设置为不同的目录将满足您的目的。例如,您可以将其设置为每个目录中的子目录,即。相对路径。否则,在目录之间共享会话,将session_save_path设置为相同的完整路径。对我有用..