我想根据用户所在的文件夹设置不同的会话ID。
例如,我有域https://example.com,其中包含文件夹/ app1,/ app2等,然后是每个应用程序文件夹中的多个文件。我想设置一个会话ID,用于app1中的所有文件,以及在app2中使用的不同会话ID。
可以这样做吗?
答案 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设置为相同的完整路径。对我有用..